POJ 2407 Relatives

来源:互联网 发布:js中的for循环 编辑:程序博客网 时间:2024/05/16 02:07
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 13920 Accepted: 6965

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

7120

Sample Output

64

Source

Waterloo local 2002.07.01
 1 #include<cstdio> 2 int euler_phi(int p){ 3     int phi=p; 4     for(int i=2;i*i<=p;i++){ 5         if(!(p%i)){ 6             phi=phi-phi/i; 7             while(!(p%i)) 8                 p/=i; 9         }10     }11     if(p>1)12         phi=phi-phi/p;13     return phi;14 }15 int main(){16     int p;17     while(scanf("%d",&p),p)18         printf("%d\n",euler_phi(p));19     return 0;20 }

裸的欧拉函数

 
0 0
原创粉丝点击