hdu1787 GCD Again(数论:欧拉函数)

来源:互联网 发布:dw制作淘宝首页教程 编辑:程序博客网 时间:2024/05/19 04:26

这么水的一道题我做了一个多小时!!!

就是很简单的一个求欧拉函数,我还在那素数打表...

主要原因就是只知道欧拉函数的形式,不知道它的具体意义...

0ms代码如下:

#include <math.h>#include <stdio.h>int euler_phi(int n) {    int i, ans = n;    for(i=2; i<(int)sqrt(n*1.0)+1; ++i) {        if(n%i == 0) {            ans = ans/i*(i-1);            n /= i;            while(n%i == 0)                n /= i;        }    }    if(n > 1)        ans = ans/n*(n-1);    return ans;}int main(void) {    int n, ans, i;    while(scanf("%d", &n), n) {        ans = euler_phi(n);        printf("%d\n", n-ans-1);    }    return 0;}



0 0