LK的数学题
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
LK最近遇到一个问题,需要你帮她一下。一个整数n,求[1,n)中,和n互素的数的个数。
-
输入
-
多组测试数据,每一行有一个整数n(n<1000000001),0表示输入结束。
输出
- 小于n同时和n互素的整数的个数 样例输入
-
7 12 0
样例输出
-
6 4
-
多组测试数据,每一行有一个整数n(n<1000000001),0表示输入结束。
欧拉函数,最主要是求解的过程,几天不用,自己也是忘了,还是需要继续努力学习!
#include<stdio.h>
int euler(int x)//求欧拉数值
{
int sum=x;
for(int i=2;i*i<=x;++i)
{
if(x%i==0)
{
sum=sum-sum/i;
while(x%i==0)
{
x/=i;
}
}
}
if(x>1)
{
sum=sum-sum/x;
}
return sum;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
printf("%d\n",euler(n));
}
return 0;
}