POJ-2407 欧拉函数
生活随笔
收集整理的這篇文章主要介紹了
POJ-2407 欧拉函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本題題意就是要對(duì)輸入的任意一個(gè)1e9內(nèi)的數(shù)字求出其歐拉函數(shù)值
根據(jù)
歐拉函數(shù)
?編輯code:#include<cstdio> #include<iostream> #include<vector> using namespace std; typedef long long ll; const int lim = 100005; bool vis[lim]; vector<int>p; void prime() {for(int i=2;i<lim;i++){if(!vis[i]){p.push_back(i);for(int j=i+i;j<lim;j+=i)vis[i]=1;}} } int main() {prime();int c;while(scanf("%d",&c),c){ll ans = c,pc= c;for(int i=0;p[i]*p[i]<=pc;i++) {if(pc%p[i]==0){while(pc%p[i]==0)pc/=p[i];ans=ans*(p[i]-1)/p[i];}} if(pc>1)ans=ans*(pc-1)/pc; printf("%lld\n",ans);} return 0; }
總結(jié)
以上是生活随笔為你收集整理的POJ-2407 欧拉函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PDF转Word时提示有密码两种常用解密
- 下一篇: 对于一个IE8兼容性问题的反思