Relatives

来源:互联网 发布:手机微信崩溃数据丢失 编辑:程序博客网 时间:2024/05/17 02:00

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


#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <queue>#include <algorithm>#include <cmath>#include <string>#include <map>#include <set>using namespace std;typedef long long LL ;int euler(int n){ //返回euler(n)     int res=n,a=n;     for(int i=2;i*i<=a;i++){         if(a%i==0){             res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出             while(a%i==0) a/=i;         }     }     if(a>1) res=res/a*(a-1);     return res;}int main (){int x;while(~scanf("%d",&x)&&x){    printf("%d\n",euler(x));}return 0;}


0 0
原创粉丝点击