zoukankan      html  css  js  c++  java
  • 欧拉函数

    找新朋友

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
                    Total Submission(s): 12134    Accepted Submission(s): 6430



    Problem Description
    新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
     
    Input
    第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数。
     
    Output
    对于每一个N,输出一行新朋友的人数,这样共有CN行输出。
     
    Sample Input
    2 25608 24027
     
    Sample Output
    7680 16016
    欧拉函数用于计算小于等于N,并与N互质的正整数。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAX 32769
    using namespace std;
     
    int Eu(int n)
    {
        int ret = n;
        for(int i = 2;i*i<=n;i++)
        {
            if(n%i==0)
            {
                ret = ret/i*(i-1);
            }
            while(n%i==0) n/=i;
        }
        if(n>1) ret=ret*(n-1)/n;
        return ret;
    }
     
    int main()
    {
        int N;
        cin>>N;
        while(N--)
        {
            int n;
            scanf("%d",&n);
            int ans = Eu(n);
            cout<<ans<<endl;
        }
    }





  • 相关阅读:
    继续学习AJAX
    最近在看AJAX
    selenium学习模拟键盘按键操作
    二十三。克隆
    二十五。继承
    十八。类的属性
    二十一。第四章综合例题
    二十四。继承
    十七。对JAVA中堆和栈的细致了解
    十六。方法调用以及传参
  • 原文地址:https://www.cnblogs.com/liwenchi/p/7259368.html
Copyright © 2011-2022 走看看