//比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数或素数
private static void testSushu() {
List<String> sushuList = new ArrayList<String>();
int num = 1000;
int j;
boolean isSushu;
for (int i = 2; i <= num; i++) {
//找2~1000之间素数
//备注:这里加上这个判断其实有些时候也不一定会提升性能很明显,加了判断本身也是需要消耗计算机资源。数量比较大,提升会比较明显
if(i == 1 || (i % 2 == 0 && i != 2 ) ) continue; //偶数和1排除
isSushu = true;
for (j = 2; j < i; j++) {
//当前循环变量2~i的数,能否被i整除,如果能,表明不是素数
if (i % j == 0) {
isSushu = false;
break;
}
}
//打印
if ( isSushu) {
sushuList.add(i+"");
}
}
System.out.println("数量:" + sushuList.size());
System.out.print("元素:");
for (String str : sushuList) {
System.out.print(str + " ");
}
}
//除2
private static void testSushu2() {
List<String> sushuList = new ArrayList<String>();
int num = 1000;
int j;
boolean isSushu;
for (int i = 2; i <= num; i++) {
//备注:这里加上这个判断其实有些时候也不一定会提升性能很明显,加了判断本身也是需要消耗计算机资源。数量比较大,提升会比较明显
if(i == 1 || (i % 2 == 0 && i != 2 ) ) continue; //偶数和1排除
isSushu = true;
for (j = 2; j <= i/2 ; j++) {
//这里比上一步:性能提升一倍,主要考虑2 ~ i/2之间的数,如果找到一个数j能被i整除,表明不是素数
if (i % j == 0) {
isSushu = false;
break;
}
}
//打印
if (isSushu) {
sushuList.add(i+"");
}
}
System.out.println("数量:" + sushuList.size());
System.out.print("元素:");
for (String str : sushuList) {
System.out.print( str + " ");
}
}
//开方:最高效
private static void testSushu3() {
List<String> sushuList = new ArrayList<String>();
int num = 1000;
int j;
boolean isSushu;
for (int i = 2; i <= 1000; i++) {
//备注:这里加上这个判断其实有些时候也不一定会提升性能很明显,加了判断本身也是需要消耗计算机资源。数量比较大,提升会比较明显
if(i == 1 || (i % 2 == 0 && i != 2 ) ) continue; //偶数和1排除
isSushu = true;
for (j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
isSushu = false;
break;
}
}
if (isSushu) {
sushuList.add(i+"");
}
}
System.out.println("数量:" + sushuList.size());
System.out.print("元素:");
for (String str : sushuList) {
System.out.print( str + " ");
}
}
java求素数的方式
猜你喜欢
转载自blog.csdn.net/u010503822/article/details/78734371
今日推荐
周排行