【POJ-2407】Relatives

来源:互联网 发布:mysql转换日期格式 编辑:程序博客网 时间:2024/06/08 16:09


点击打开链接


Relatives
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 15187 Accepted: 7681

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


//              题解:欧拉问题。

//代码如下:

#include <cstdio>#include <cmath>int main(){int n;int Eular(int n);while (scanf ("%d",&n) && n) { printf ("%d\n",Eular(n)); }return 0;} int Eular(int n)  {      int ans=1;      for (int i=2;i<=sqrt((double)n);i++)      {          if (n%i==0)          {              n/=i;              ans*=(i-1);              while (n%i==0)               {                  n/=i;                  ans*=i;              }          }      }      if (n>1)              ans*=(n-1);      return ans;  }