Javaのは1-10000以内の質数を探して、スピードは大いに比べます
1736 ワード
方法1:2回のforサイクルでi%jはjの各数値と比較し,速度が遅い
方法2:breakジャンプサイクルを利用してi%j==0の値サイクルを見つければジャンプし,速度が速い
方法3:j開平方の値を見つけるだけで素数かどうかを判定することができ、ここまで言うと少し理解できないかもしれませんが、例えば:17という数字は、17開平方の値が4点以上で、iの値が17で割り切れないとき、彼の平方根の値も必ず割り切れません.みんなよく考えなさい.
package com.huaxin;
public class TestPrimeNum {
public static void main(String[] args){
//
boolean flag01 = false;
long start01 =System.currentTimeMillis();
for(int i = 2; i < 100000; i++){
for(int j = 2; j < i; j++){
if(i % j == 0){
flag01 = true;
}
}
if(flag01 == false){
System.out.println(i);
}
flag01 = false;
}
}
}
方法2:breakジャンプサイクルを利用してi%j==0の値サイクルを見つければジャンプし,速度が速い
package com.huaxin;
public class TestPrimeNum {
public static void main(String[] args){
boolean flag02 = false;
long start02 =System.currentTimeMillis();
for(int i = 2; i < 100000; i++){
for(int j = 2; j < i; j++){
if(i % j == 0){
flag02 = true;
break;
}
}
if(flag02 == false){
System.out.println(i);
}
flag02 = false;
}
long end02 = System.currentTimeMillis();
System.out.println(" :" + (end02 - start02));
}
}
方法3:j開平方の値を見つけるだけで素数かどうかを判定することができ、ここまで言うと少し理解できないかもしれませんが、例えば:17という数字は、17開平方の値が4点以上で、iの値が17で割り切れないとき、彼の平方根の値も必ず割り切れません.みんなよく考えなさい.
package com.huaxin;
public class TestPrimeNum {
public static void main(String[] args){
//
boolean flag03 = false;
long start03 = System.currentTimeMillis();
for(int i = 2; i < 100000; i++){
for(int j = 2; j <= Math.sqrt(i); j++){
if(i % j == 0){
flag03 = true;
break;
}
}
if(flag03 == false){
System.out.println(i);
}
}
long end03 = System.currentTimeMillis();
System.out.println(" :" + (end03 - start03));
}
}