P1174 互素

P1174 互素

时间: 1000ms / 空间: 131072KiB / Java类名: Main

描述

    对于某个数n,,我们这次的工作仅是求出小于n且和n互质的数的个数,,比如n=10时 1,3,7,9均与10互质

//互质的定义是gcd(a,b)=1

输入格式

输入只有一行,一个数N1<=N<=2,000,000,000)。

输出格式

输出也只有一行,输出和小于n且和n互质的数的个数

测试样例1

输入

10

输出

4

----------------------------------------------------------------------------------------

 * 欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 

通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。

-------------------------------------------------------------------------------------------------------------------

评测状态 Accepted

题目 P1174 互素

提交时间 2016-03-27 09:21:23

代码语言 Java

消耗时间 1325 ms

消耗内存 14288 KiB

----------------------------------------------------------------

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int i;
            int cnt=n;
            for(i=2;n!=1;i++){
                if(n%i==0){
                    cnt-=cnt/i;
                    while(n%i==0) n/=i;
                }
            }
            System.out.println(cnt);
        }
        sc.close();

    }

}
原文地址:https://www.cnblogs.com/watchfree/p/5325573.html