展开全部
利用欧拉函数和它本身不同质因e68a84e8a2ad3231313335323631343130323136353331333361303032数的关系,用筛法计算出某个范围内所有数的欧拉函数值。
欧拉函数和它本身不同质因数的关系:
欧拉函数ψ(N)=N{∏p|N}(1-1/p)
亦即: (P是数N的质因数)
如:
ψ(10)=10×(1-1/2)×(1-1/5)=4;
ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;
ψ(49)=49×(1-1/7)= =42。 import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Oula { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int num=scanner.nextInt(); int a=num; double oulaAnwser=0; ArrayList oulaList = new ArrayList(); if (isPrime(num)){ oulaAnwser=num-1; }else{ List allPrime = getAllPrime(num); for(int i : allPrime){ int tem=num; num=repeatdivide(num,i); if (tem!=num){ oulaList.add(i); } } oulaAnwser=a; for (int j :oulaList){ oulaAnwser=oulaAnwser*(1-(double)1/j); } } System.out.println(欧拉函数的值为+Math.round(oulaAnwser)); } public static List getAllPrime(int num){ ArrayList result = new ArrayList(); for (int i =2;i