欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

常用函数

程序员文章站 2022-06-20 09:04:23
...

快速冥

strlwr(a),将字符串a转换为小写
strupr(a),转换为大写
reverse(a+m,a+n);把a数组m到n-1的内容逆序存储
reverse_copy(a+m,a+n,b)把a数组m到n-1的内容逆序存储到b数组
精确的π值:double m=std::atan(1)*4;

int PowerMod(int a,int b)
{
	int ans=1;
	while(b>0)
	{
		if(b%2==1)
			ans=ans*a;
		b/=2;
		a=a*a;
	};
	return ans;
}

快速判断素数:

bool sushu(int num)
{
    if (num <= 3)
        return num > 1;
    if (num % 6 != 1 && num % 6 != 5)
        return false;
    for (int i = 5; i <=sqrt(num); i += 6)
        if (num % i == 0 || num % (i + 2) == 0)
            return false;
    return true;
}

欧卡筛

快速筛选出1到n之间的素数,原理是每一个合数都能被他最小的素数筛掉

int prime[3000000];
bool vis[3000000];
void oula()
{
    memset(vis, 0, sizeof(vis));/*标记,0代表他不是素数*/
    memset(prime, 0, sizeof(prime));
    int cnt=1;
    prime[1]=2;/*唯一一个偶数的素数*/
    for(int i = 3; i <=2000001; i+=2)/*优化,偶数一定是合数,节省时间*/
    {
        if(!vis[i])
            prime[++cnt] = i;/*标记为0,说明是素数,存入*/
        for(int j = 1; j<cnt && i*prime[j]<=2000001; j++)/*防止爆数组*/
        {
            vis[i*prime[j]] = true;
            if(i % prime[j] == 0)
                break;
        }
    }
}
相关标签: 常用的函数