1. 程式人生 > >hdoj 1286 找新朋友 (尤拉函式)

hdoj 1286 找新朋友 (尤拉函式)

找新朋友
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15913 Accepted Submission(s): 8501

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

思路:沒啥思路,尤拉函式,直接套

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