Relatives
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 12496 | Accepted: 6087 |
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
64
#include<stdio.h> #include<string.h> int n,i; int oular(int n)//欧拉函数模板得出的是小于n的与n互质(就是二个数的最大公约数是1)的个数 { int res=n; int a=n; for(i=2;i*i<=a;i++) { if(a%i==0) { res=res/i*(i-1); while(a%i==0) a=a/i; } } if(a>1) res=res/a*(a-1); return res; } int main() { int n; while(~scanf("%d",&n),n) { printf("%d\n",oular(n)); } return 0; }