黑马程序员技术交流社区
标题:
分享打印质数优化后的程序
[打印本页]
作者:
探索者
时间:
2015-6-2 21:33
标题:
分享打印质数优化后的程序
/*
需求:打印出2000以内的所有质数。
思路:
用第一个循环去从2开始遍历2000以内的所有奇数,因为偶数一定不是质数;并用第二层循环去判断所遍历的数是不是质数,
要判断遍历的数是不是质数,只需整除完从2到自身的sqrt()的所有奇数即可,如果都没有被整除,则
该数为质数,否则不为质数。
*/
class ZhiShuDemo
{
public static void main(String[] args)
{
printZhiShu(2000);
}
public static void printZhiShu(int key)
{
int count=1,flag=0;//定义一个计数器和标记;
//将2到9之间的数直接放到循环外面去判断,可省去无效的判断次数;
System.out.println(2+"--"+count+" ");
for (int x=3;x<9 ;x+=2 )
{
count++;
System.out.println(x+"--"+count+" ");
}
for (int x=9;x<=key ;x+=2 )//对9到2000的数进行遍历;
{
for (int y=3;y<=(int)Math.sqrt(x);y+=2)//判断是否为质数,只需整除完2到自身的一半;
{
if ((x%y)==0)
{
flag=1;//如果能够被整除,标志置为1;
break;//跳出当前循环;
}
}
if (flag==0)//如果标志为0,则计数器加1,并打印该质数和累加的次数;
{
count++;
System.out.println(x+"--"+count+" ");
}
flag=0;
}
}
}
复制代码
作者:
w490541
时间:
2015-6-2 21:44
顶顶顶顶顶顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2