Relatives 【poj-2407】【欧拉函数】

来源:互联网 发布:软件社区 编辑:程序博客网 时间:2024/06/05 16:43


Relatives
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 14820 Accepted: 7447

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<cstdio>#include<cmath>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;  }  int main(){int m;while(scanf("%d",&m)&&m){printf("%d\n",Eular(m));}return 0;}




原创粉丝点击