Java:Project Euler 41:泛数字素数
问题: 以下是完整的计划。我的问题是关于一句代码Java:Project Euler 41:泛数字素数,java,primes,Java,Primes,问题: 以下是完整的计划。我的问题是关于一句代码 public class Practice { public static void main(String[] args) { for(double i=7654321;i>1234566;i-=2){ if(isUnique(i)){ if(isPrime(i)){ System.out.println(i);
public class Practice {
public static void main(String[] args) {
for(double i=7654321;i>1234566;i-=2){
if(isUnique(i)){
if(isPrime(i)){
System.out.println(i);
break;
}
}
}
for(double i=4321;i>1233;i-=2){
if(isUnique(i)){
if(isPrime(i)){
System.out.println(i);
break;
}
}
}
}
static boolean isUnique(double num){
String str = String.valueOf(num);
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='9'){return false;}
if(str.charAt(i)=='8'){return false;}
if(str.charAt(i)=='0'){return false;} //<---***Sentence 1***
}
for(int i=0;i<str.length()-1;i++){
for(int j=i;j<str.length()-1;j++){
if(str.charAt(i)==str.charAt(j+1)){return false;}
}
}
return true;
}
static boolean isPrime(double num){
for(double i=3;i<=num/2;i+=2){
if(num%i==0){return false;}
}
return true;
}
公共课堂实践{
公共静态void main(字符串[]args){
对于(双i=7654321;i>1234566;i-=2){
如果(是唯一的(i)){
如果(i){
系统输出打印LN(i);
打破
}
}
}
对于(双i=4321;i>1233;i-=2){
如果(是唯一的(i)){
如果(i){
系统输出打印LN(i);
打破
}
}
}
}
静态布尔值是唯一的(双数值){
String str=String.valueOf(num);
对于(int i=0;i由于您使用的是double
,因此所有字符串都在表单上
7654321.0
都包含一个0
,立即结束isUnique()
调用。改为使用int
对于调查素数更有意义。如果使用调试器,您可以看到参数double num
的值是7654321.0
.0
导致方法终止。解决方案:不要使用double,而是使用long或int