国内html网站欣赏,有谁想做网站 优帮云,莱芜都市网旗下论坛,wordpress Meta模块本题题意就是要对输入的任意一个1e9内的数字求出其欧拉函数值 根据 欧拉函数 编辑对正整数n#xff0c;欧拉函数是小于n的正整数中与n互质的数的数目#xff08;φ(1)1#xff09;而互质指的是公因数为只有1的两个数#xff0c;任何数与1都互质根据欧拉公式通式#xff1…本题题意就是要对输入的任意一个1e9内的数字求出其欧拉函数值 根据 欧拉函数 编辑对正整数n欧拉函数是小于n的正整数中与n互质的数的数目φ(1)1 而互质指的是公因数为只有1的两个数任何数与1都互质 根据欧拉公式通式 可以在O(sqrt(n))的复杂度求出这个值code#includecstdio
#includeiostream
#includevector
using namespace std;
typedef long long ll;
const int lim 100005;
bool vis[lim];
vectorintp;
void prime()
{for(int i2;ilim;i){if(!vis[i]){p.push_back(i);for(int jii;jlim;ji)vis[i]1;}}
}
int main()
{prime();int c;while(scanf(%d,c),c){ll ans c,pc c;for(int i0;p[i]*p[i]pc;i) {if(pc%p[i]0){while(pc%p[i]0)pc/p[i];ansans*(p[i]-1)/p[i];}} if(pc1)ansans*(pc-1)/pc; printf(%lld\n,ans);} return 0;
}