P1174 互素

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

描述

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

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

输入格式

输入只有一行,一个数N(1<=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(); } }
04-15 02:02