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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高腾 中级黑马   /  2013-6-15 11:22  /  1525 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高腾 于 2013-6-16 06:26 编辑

看到论坛里面一些同学对素数的判断方法,有些漏洞,随即自己写了一个方法,仅供和同学一起交流
也希望有更好方法的同学能拿出来一起分享,下面是我写的:
  1.             int j = 0;
  2.             int count = 0;
  3.             for (int i = 2; i <= 100; i++)  //输出1-100以内的素数
  4.             {
  5.                 //素数的判断方法是除了1和本身以外,不能被其它自然数整除,只用计算到本身的平方根处
  6.                 for (j = 2; j < Math.Sqrt(i); j++)  
  7.                 {
  8.                     if (i % j == 0) //如果该数能被某个自然数整除,则退出当前循环
  9.                     {
  10.                         break;
  11.                     }
  12.                     if (i % j != 0) //如果不能整除,继续下一个循环
  13.                     {
  14.                         continue;
  15.                     }
  16.                 }
  17.                 if (i==2||j > Math.Sqrt(i)) //需要注意的是2也是素数
  18.                 {
  19.                     count++;
  20.                     Console.Write("{0}\t",i);
  21.                     if (count % 8 == 0) //每行输出8个数
  22.                     {
  23.                         Console.WriteLine();
  24.                     }
  25.                 }
  26.             }
  27.             Console.ReadLine();
复制代码

test.jpg (21.68 KB, 下载次数: 0)

test.jpg

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
Akm 黑马帝 2013-6-15 11:29:45
沙发
  1. public class Demo{  
  2.     public static void main(String[] args) {  
  3.         // method();  
  4.         // method2();  
  5.         // method3();  
  6.         method4();  
  7.     }  
  8.   
  9.     private static void method4() {  
  10.         Scanner sc = new Scanner(System.in);  
  11.         int x = 0;  
  12.         int i = 2;  
  13.         System.out.println("输入一个数------>");  
  14.         x = sc.nextInt();  
  15.         while (x <= 2) {  
  16.             System.out.println("不用判断,你都懂~");  
  17.             System.out.println("输入一个数------>");  
  18.             x = sc.nextInt();  
  19.         }  
  20.         while (x % i != 0) {  
  21.             i++;  
  22.         }  
  23.         if (x == i) {  
  24.             System.out.println("素数");  
  25.         } else  
  26.             System.out.println("不是素数");  
  27.   
  28.     }  
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 李奔 于 2013-6-15 12:52 编辑

一种比较简单的实现方法:
  1.            Console.WriteLine("请输入一个整数:");
  2.             String str = Console.ReadLine();
  3.             int zhengshu;
  4.             if (!(int.TryParse(str, out zhengshu)))
  5.             {
  6.                 Console.WriteLine("输入的整数不对,请重新输入!");
  7.                 return;
  8.             }

  9.             int i;
  10.             //判断一个数是否为质数,只需要判断它能否被从2~它的一半整除。
  11.             for (i = 2; i <=zhengshu / 2; i++)
  12.             {
  13.                 if (zhengshu % i != 0)
  14.                 {
  15.                     continue;
  16.                 }
  17.                 else
  18.                 {
  19.                     Console.WriteLine("{0}不是质数",zhengshu);
  20.                     break;
  21.                 }
  22.             }
  23.             if(i>zhengshu/2)
  24.             {
  25.                 Console.WriteLine("{0}是质数",zhengshu);
  26.             }

  27.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马