打印100以内所有的质数
打印100以内所有的质数代码
package homework;
/**
打印100以内所有的质数
*/
public class HomeWork5 {
public static void main(String[] args) {
int i;//找num的因子
for(int num=2;num<100;num++) {
for(i=2;i<=num;i++) {//i<=num 和 i<num 效果一样
if(num%i==0) {//取模
break;//成功取模,调出循环,不是质数
}
}
if(i==num) {//i++和num相等,则i-1之前的所有数都不能被i,整除
System.out.println(num);//输出质数
}
}
}
}
变量变化表
序列 | num | i | i<num | break | i++ | sout |
---|---|---|---|---|---|---|
1 | 2 | 2 | false | false | 2 | 2 |
2 | 3 | 2 | true | false | 3 | 3 |
3 | 4 | 2 | true | true | ||
4 | 5 | 2 | true | false | 3 | |
5 | 3 | true | false | 4 | ||
6 | 4 | true | false | 5 | 5 | |
7 | 6 | 2 | true | true | ||
8 | 7 | 2 | true | false | 3 | |
… | … | … | … | … | … | … |
打印100000以内的所有质数,并打印出程序运行所花的时间
package homework;
/**
6.打印100000以内的所有质数,并打印出程序运行所花的时间
提示:System.currentTimeMillis();获取当前系统的毫秒值
*/
public class HomeWork6 {
public static void main(String[] args) {
int i;
double start = System.currentTimeMillis();
for(int num=2;num<100000;num++) {
for(i=2;i<num;i++) {
if(num%i==0) {
break;
}
}
if(i==num) {
System.out.println(num);
}
}
//System.out.println();
double end = System.currentTimeMillis();
System.out.println("所花时间:"+(end-start)+"毫秒");
}
}
打印质数,提高代码速度,Math.sqrt(),开方运算
double start = System.currentTimeMillis();
int flag=0;
for(int i = 2;i<=100000;i++) {
for(int j =2;j<Math.sqrt(i);j++) {//开方运算,提高运算舒服
//for(int j =2;j<i;j++) { //普通运算
if(i%j==0) {
flag = 1;
break;
}
}
if(flag==0) {
System.out.println(i);
}
flag=0;
}
//System.out.println();
double end = System.currentTimeMillis();
System.out.println("所花时间:"+(end-start)+"毫秒");