291 LK的数学题【欧拉函数】

来源:互联网 发布:如何制作风险矩阵 编辑:程序博客网 时间:2024/05/16 04:44

LK的数学题

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
LK最近遇到一个问题,需要你帮她一下。一个整数n,求[1,n)中,和n互素的数的个数。
输入
多组测试数据,每一行有一个整数n(n<1000000001),0表示输入结束。
输出
小于n同时和n互素的整数的个数
样例输入
7120
样例输出
6 4


欧拉函数,最主要是求解的过程,几天不用,自己也是忘了,还是需要继续努力学习!



#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;}




0 0