import java.util.Scanner;
public class Problem1 {
static int T,ans[];
static long A,B;
public static void main(String ar[]){
Scanner scan=new Scanner(System.in);
T=scan.nextInt();
ans=new int[T];
for(int i=0;i<T;i++){
A=scan.nextLong();
B=scan.nextLong();
for(long j=A;j<=B;j++){
if(getLucky(j)){
ans[i]++;
}
}
}
for(int i=0;i<T;i++){
System.out.println(ans[i]);
}
}
public static boolean getLucky(long j){
boolean lucky=false;
long rem,sum=0,sum1=0;
while(j>0){
rem=j%10;
sum=sum+rem;
sum1=sum1+(rem*rem);
j=j/10;
}
if(isPrime(sum)&&isPrime(sum1)){
lucky=true;
}
return lucky;
}
public static boolean isPrime(long sum){
boolean status=true;
if(sum!=1){
for (int i=2; i < sum ;i++){
int n = (int) (sum % i);
if (n==0){
status=false;
break;
}
}
}else{
status=false;
}
return status;
}
}
此代碼適用於我在A和B之間找到總數,其數字總和和數位平方總和爲總數的問題。但我需要做到最佳。我怎麼能這樣做?如何以速度速度優化此JAVA代碼?
第一個答案爲[這個問題](http://stackoverflow.com/questions/2842418/prime-numbers-code-help)會給你一個更好的方法,以確定是否數字是否爲素數。你也可能會看到[這個問題](http://stackoverflow.com/questions/1969330/printing-out-prime-numbers-from-array)。 – 2012-02-10 19:50:47
你應該問一個具體的問題。如果你希望你的代碼審查 - 你應該嘗試在[stackexchange代碼審查(http://codereview.stackexchange.com/) – amit 2012-02-10 19:53:37