nyoj-479-Coprimes

来源:互联网 发布:java final 数组 编辑:程序博客网 时间:2024/05/02 11:05

//法一
#include<stdio.h>
int eular(int n)
{
    int i,m=n,t=0;
    for(i=2;i*i<=n;i++)
    if(n%i==0)
    {
        t=1;
       n/=i;
       m=m-m/i;
        while(n%i==0)
        {
            n/=i;
        }
    }
    if(t==1&&n>1) return m-m/n;
    else if(t==1||n==1) return m;
    return n-1;
}      
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",eular(n));
    }
    return 0;
}


//法二
#include<stdio.h>
int eular(int n)
{
    int i,m=1;
    for(i=2;i*i<=n;i++)
    if(n%i==0)
    {
        n/=i;
        m*=i-1;
        while(n%i==0)
        {
            n/=i;
            m*=i;
        }
    }
    if(n>1)
    m*=n-1;
    return m;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",eular(n));
    }
    return 0;
}

                           

0 0
原创粉丝点击