您的位置:首页 > 其它

欧拉工程第47题:Distinct primes factors

2015-06-03 19:30 393 查看


题目链接:https://projecteuler.net/index.php?section=problems&id=47

题意:

最小的四个具有四个不同质数因子的整数,求出最小的这个数,这个四个数是连续的

注意:

1.四个不同的质因子,不是说是四个质因子,要去重

可以暴力破解的

Java代码:

package projecteuler41to50;

import java.util.Date;

class level47{

void solve0(){
int Max_Value=1000000;
int[] primes=new int[999];
primes[0]=2;
int j=1;
for(int i=3;i<999;i=i+2){
if(isPrime(i))
primes[j++]=i;
}
for(int i=20;i<Max_Value;i++){
if(Judge(i,primes,j) && Judge(i+1,primes,j)
&& Judge(i+2,primes,j)&&Judge(i+3,primes,j)){
System.out.println(i);
return;
}
}//134043
}

boolean Judge(int num,int[] primes,int n){
boolean flag=false;
int count=0;
for(int i=0;i<n;i++){
while(num%primes[i]==0){
flag=true;
num/=primes[i];

}// 去除这个质数的n次方 ,去重

if(flag==true) {
flag=false;
count++;
//              System.out.println(primes[i]);
}
if(count>4) return false;
}
if(count==4) return true;
return false;
}

boolean isPrime(int num){
if(num==2 ||num==3||num==5||num==7||num==11||num==13)
return true;
if(num<2||num%2==0)
return false;
for(int i=3;i<=Math.sqrt(num);++i)
if(num%i==0)
return false;
return true;
}

}
public class Problem47 {

public static void main(String[] args){
Date beginTime=new Date();
new level47().solve0();
Date endTime=new Date();
long Time=endTime.getTime()-beginTime.getTime();
System.out.println("Time:"+Time/1000+"s"+Time%1000+"ms");
}

}


结果:

134043
Time:0s131ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: