NYOJ 题目291 LK的数学题(欧拉函数)

来源:互联网 发布:疯狂美工助手打不开 编辑:程序博客网 时间:2024/05/27 12:21

LK的数学题

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
LK最近遇到一个问题,需要你帮她一下。一个整数n,求[1,n)中,和n互素的数的个数。
输入
多组测试数据,每一行有一个整数n(n<1000000001),0表示输入结束。
输出
小于n同时和n互素的整数的个数
样例输入
7120
样例输出
6 4
来源
POJ
上传者
iphxer
ac代码
#include<stdio.h>#include<string.h>int eular(int n){int ans=n,i;for(i=2;i<n;i++){if(n%i==0){ans-=ans/i;while(n%i==0){n/=i;}}}if(n>1)ans-=ans/n;return ans;}int main(){int n;while(scanf("%d",&n)!=EOF,n){printf("%d\n",eular(n));}}


0 0