首页 > 代码库 > 欧拉函数,求素数
欧拉函数,求素数
/*=======================================================*\
| 递推求欧拉函数phi(i)
欧拉函数\varphi(n)是小于或等于n的正整数中与n互质的数的数目
\*=======================================================*/
#define N 3000000
__int64 phi[N + 100];
void Euler()
{
int i, j;
for(i = 1; i < N; i++)
phi[i] = i;
for(i = 2; i < N; i++)
if(i == phi[i]) //若i为素数 第一次不是
for(j = i; j < N; j += i) //让j累加i
phi[j] = (phi[j] / i) * (i - 1); //求欧拉函数
}
/*=========================================================*\
筛选法求一个数的最大素因子在素数表中是第几个素数
利用筛选法得到素数,每次用一个素数更新它的所有倍数,
更新为这个素数的标号,
由于大的素数会更新小的素数,所以最后得到的就是最大素因子
\*=========================================================*/
#include <string>
#define maxn 1000000
int prime[maxn];
void f()
{
memset(prime, 0, sizeof(prime));
for(int i=2, flag=0; i<maxn; i++)
{
if(!prime[i])
{
flag++;
for(int j=i; j<maxn; j+=i)
prime[j] = flag;
}
}
}
来自为知笔记(Wiz)
附件列表
欧拉函数,求素数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。