zoukankan      html  css  js  c++  java
  • 找新朋友(欧拉函数)

    找新朋友

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
    Total Submission(s) : 39   Accepted Submission(s) : 32

    Font: Times New Roman | Verdana | Georgia

    Font Size: ← →

    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
    题解:
    欧拉函数的模板题;
    代码:
     1 #include<stdio.h>
     2 #include<math.h>
     3 int main(){
     4         int T,N;
     5         scanf("%d",&T);
     6         while(T--){
     7             scanf("%d",&N);
     8             int ans=N;
     9             for(int i=2;i<=sqrt(N);i++){
    10                     if(N%i==0){
    11                         ans=ans/i*(i-1);
    12                         while(N%i==0)
    13                             N/=i;
    14                     }
    15             }
    16             if(N>1)ans=ans/N*(N-1);
    17             printf("%d
    ",ans);
    18         }
    19     return 0;
    20 }
  • 相关阅读:
    什么是前后端分离?
    Ubuntu修改时区和更新时间
    待学
    Pycharm默认输入状态是insert状态,选中文字无法直接输入替换或删除
    使用jsonify返回json数据
    Linux
    Linux
    Linux
    JavaScript
    JavaScript
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4763749.html
Copyright © 2011-2022 走看看