欧拉函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欧拉函数
[Submit Code] [Top 20 Runs]
Acceteped : 91
Submit : 405
Time Limit : 1000 MS
Memory Limit : 65536 KB
Description
一个正整数n,那么我们称1到n-1中与n互质的数的个数为n的欧拉函数值。如果 是能整除n的所有素数,那么欧拉函数 。比如6,与6互质的数为1和5,所以6的欧拉函数为2;能整除6的素数为2和3,那么根据公式,6*(1/2)*(2/3) = 2。
输入
有多个样例。每行输入一个整数n,(1<=n<=100,000,000),如果n为0,表示输入结束,这个样例不需要处理。
输出
每行输出一个整数的欧拉函数。
样例输入
1
29
100000000
0
样例输出
0
28
40000000
Sample Input
#include <cmath>
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int cal(int n)
{
iHale Waihona Puke Baidut i,re=1;
for(i=2;i*i<=n;i++)
if(n%i==0)
{
n/=i;re*=i-1;
while(n%i==0)
{
n/=i;re*=i;
}
}
if(n>1) re*=n-1;
return re;
}
int main()
{
int n;
while(1)
{
cin>>n;
if(n==0) return 0;
if(n==1) cout<<0<<endl;
else
cout<<cal(n)<<endl;
}
}
相关文档
最新文档