您的位置:首页 > 其它

POJ2407(欧拉函数)

2016-08-17 09:36 267 查看

Relatives 

   
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 13598   Accepted: 6771

Description

Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that a = xy and b = xz.

Input

There are several test cases. For each test case, standard input contains a line with n <= 1,000,000,000. A line containing 0 follows the last case.

Output

For each test case there should be single line of output answering the question posed above.

Sample Input

7
12
0

Sample Output

6
4

裸的欧拉函数,因为n的数据比较大,不用筛选法打欧拉函数表,直接用公式:

  



//2016.8.17
#include<iostream>
#include<cstdio>

using namespace std;

int phi(int n)
{
int ans = n;
for(int i = 2; i <= n; i++)
{
if(n%i==0)
{
ans -= ans/i;
while(n%i==0)
n /= i;
}
if(n == 1)break;
}
return ans;
}

int main()
{
int n;
while(cin>>n&&n)
{
cout<<phi(n)<<endl;
}

return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: