A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想用java编一个程序用来求101到225之间共有多少个素数,并把它们都显示出来,以下是代码:
  1. class PrimeNumber
  2. {
  3. public static void main(String[] args)
  4. {
  5. Opera o=new Opera();
  6. o.Output();
  7. }
  8. }

  9. class Opera
  10. {
  11. static int flag=0;
  12. Opera()
  13. {
  14. for(int i=101;i<122;i++)
  15. {       
  16. int k=(int)(Math.sqrt(i)+1);
  17. for(int n=2;n<k;n++)
  18. {       
  19. while(n==(int)(Math.sqrt(i)))
  20. {
  21. if(i%n!=0)
  22. {
  23. flag++;
  24. System.out.println(i);
  25. break;
  26. }
  27. }
  28. if(i%n==0)
  29. {
  30. break;
  31. }       
  32. }
  33. }
  34. }
  35. void Output()
  36. {
  37. System.out.println("一共有素数"+flag+"个");
  38. }
  39. }
复制代码
下面是运行结果:
101
103
107
109
113
然后cmd窗口就没反应了,一看windows任务管理器 cpu占用率100%,大家谁能帮我看看这个程序到底哪里错了啊???其实开始时候我是求101到200之间的素数的,但也出现了这样的问题,我以为是运算不过来呢,就把200改为110,一试,真好使,但我把数设置为123就不行了,不知道为什么.......

1 个回复

倒序浏览
本帖最后由 BOb_小星 于 2015-5-15 14:24 编辑

代码在i=121的时候  死循环了   你看一下  检查一下whlie语句
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马