您的位置:首页 > 其它

POJ 2407 Relatives

2014-08-27 10:39 232 查看
Relatives

Time Limit: 1000MSMemory Limit: 65536K
Total Submissions: 11340Accepted: 5522
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
6
4

Source
Waterloo
local 2002.07.01

题目 大意:
       给你一个数n,让你求在n中,和n互质(只有1一个公约数)的数有多少个?

思路 :
        欧拉公式。
       根据欧拉公式。φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),

        其中p1, p2……pn为x的所有质因数,x是不为0的整数。

        φ(1)=1(唯一和1互质的数就是1本身)。

        (注意:每种质因数只一个。比如12=2*2*3

         欧拉公式那么φ(12)=12*(1-1/2)*(1-1/3)=4);

AC 代码:
#include<stdio.h>
int main()
{
int n,sum,i;
double t;
while(~scanf("%d",&n))
{
if(n==0)
{
break;
}
sum=n;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
t=1.0/i;
sum=sum*(1-t);
}
while(n%i==0)
{
n=n/i;
}
}
if(n!=1)
{
t=1.0/n;
sum=sum*(1-t);
}
printf("%d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poj ACM 2407 欧拉公式