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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© EYE_SEE_YOU   /  2013-8-12 12:52  /  7224 人查看  /  50 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

回帖奖励 +1

本帖最后由 咕咕猫 于 2013-9-15 08:18 编辑

素数即为除1和它本身之外不再被其他数正除的数,1除外
class Demo
{
        public static void main(String[] args)
        {
                 SuShu ss = new SuShu();//建立对象
                 ss.method(1000);//传入所要求素数的范围
        }
}
class SuShu
{
        public void method(int n)
        {
                for (int y=0,z=2;z<n;z++ )
                        {
                                if(z==2)
                                System.out.println(2);
                                if (z%2!=0)//除2之外能被2整除的肯定不是素数
                                {
                                        for (int x=2;x<(z-1)/2 ; x++)//此处只要n值除到自己的一半即可,比如n=97,只需除到x=48即可
                                        {
                                                if(z%x==0)//被整出一次y值就加一次
                                                y++;
                                                if(y>=1)//如果出现了那证明肯定不是素数了直接结束此次循环即可
                                                        break;
                                        }
                                                if (y==0)
                                                {
                                                        System.out.println(z);
                                                }
                                                y=0;//将y值归零重新计数
                                }
                        }
        }
}



评分

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

查看全部评分

回复 使用道具 举报

回帖奖励 +1

很不错、、、
回复 使用道具 举报

回帖奖励 +1


import java.util.Scanner;  
  
public class Test {  
  
    private static Scanner sc;  
   
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
  
        System.out.print("请输入一个整数:");  
        sc = new Scanner(System.in);  
        int a = sc.nextInt();  
        boolean f = Brute_Force(a);  
        System.out.println(a + "是否为质素(素数):" + f);  
    }  
  
    public static boolean Brute_Force(int n) {  
        if(n!=1){  
            for (int i = 2; i <= Math.sqrt(n); i++){  
                if (n % i == 0){  
                    return false;  
                }  
            }  
            return true;  
        }else{  
            return false;  
        }  
    }  
  
}

评分

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

查看全部评分

回复 使用道具 举报

回帖奖励 +1

赞一个 不错
回复 使用道具 举报

回帖奖励 +1

先看下。
回复 使用道具 举报

回帖奖励 +1


  1.                 /**
  2.                  * 查找100以内的质数
  3.                  */
  4.                 ArrayList<Integer> primeNumber = new ArrayList<Integer>();
  5.                 lable: for (int i = 2; i < 100; i++) {
  6.                         if (i == 2 || i % 2 != 0) { // 质数是除2以外的奇数
  7.                                 int sqrt = (int) Math.sqrt(i);// 一个数如果是合数,那么它的所有的因子不超过它的开方
  8.                                 for (int j = 0, h = primeNumber.size(); j < h; j++) {
  9.                                         // 获得已经得到的质数
  10.                                         int number = primeNumber.get(j);
  11.                                         // 能被平方根以内的质数整数的都是合数
  12.                                         if (number > sqrt || i % number == 0) {
  13.                                                 continue lable;
  14.                                         }
  15.                                 }
  16.                                 primeNumber.add(i);
  17.                         }
  18.                 }
复制代码


很简单的一个方法。
回复 使用道具 举报

回帖奖励 +1



  1. /*
  2. * Created on 2004-10-7
  3. * 文件名:GetSs.java
  4. */
  5. //package ss;



  6. import java.io.BufferedReader;
  7. import java.io.IOException;
  8. import java.io.InputStreamReader;
  9. import java.util.Vector;



  10. /**
  11. * <p>输出指定值域内的素数</p>
  12. * <p>手工设置每行显示的素数的个数</p>
  13. * @author jly
  14. */
  15. public class GetSs {
  16. //起始值
  17. private int iStartVal = 0;
  18. //终止值
  19. private int iEndVal = 0;
  20. //输出结果时每行显示的素数的个数
  21. private int iNumPerLine = 3;
  22. //存放素数的Vector
  23. private Vector vSs = new Vector();

  24. /**
  25.   * <p>构造器</p>
  26.   * <p>无参数</p>
  27.   */
  28. public GetSs(){
  29.   setStartVal(getParam("请输入起始值:"));
  30.   setEndVal(getParam("请输入终止值(最大值):"));
  31.   setNumPerLine(getParam("请输入每行显示的素数的个数:"));
  32.   getSs();
  33. }

  34. /**
  35.   * 从命令行读取整型值参数
  36.   * @param msg 需要在命令行显示的提示语言
  37.   * @return 输入的值
  38.   */
  39. public int getParam(String msg){
  40.   BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
  41.   int iParam = 0;
  42.   
  43.   //所有的值必须大于零
  44.   while(iParam <= 0){
  45.    System.out.print(msg);
  46.    try {
  47.     iParam =  Integer.parseInt( br.readLine() );
  48.    } catch (NumberFormatException e) {
  49.     e.printStackTrace();
  50.     System.out.println("格式错误,请重新输入!");
  51.     iParam = 0;
  52.    } catch (IOException e) {
  53.     e.printStackTrace();
  54.     iParam = 0;
  55.    }
  56.   }
  57.   return iParam;
  58. }

  59. /**
  60.   * 设置起始值
  61.   * @param iStartVal 起始值
  62.   */
  63. public void setStartVal(int iStartVal){
  64.   this.iStartVal = iStartVal;
  65. }

  66. /**
  67.   * 设置终止值
  68.   * @param iEndVal 终止值(最大值)
  69.   */
  70. public void setEndVal(int iEndVal){
  71.   this.iEndVal = iEndVal;
  72. }

  73. /**
  74.   * 设置输出时每行显示的素数的个数
  75.   * @param iNumPerLine 每行显示的素数的个数
  76.   */
  77. public void setNumPerLine(int iNumPerLine){
  78.   this.iNumPerLine = iNumPerLine;
  79. }

  80. /**
  81.   * 获取指定范围内的所有素数
  82.   */
  83. private void getSs(){
  84.   int i = iStartVal;
  85.   while(i <= iEndVal){
  86.    if( isSs(i) ) vSs.add( String.valueOf(i) );
  87.    i++;
  88.   }
  89. }

  90. /**
  91.   * 判断某整型值是否为素数
  92.   * @param iSsVal 需要判断的值
  93.   * @return 是否为素数
  94.   */
  95. private boolean isSs(int iSsVal){
  96.   for(int i = 2; i <= iSsVal / 2; ++i){
  97.    if(iSsVal % i == 0) return false;
  98.   }
  99.   return true;
  100. }

  101. /**
  102.   * 根据指定每行显示的个数打印指定范围的素数
  103.   */
  104. public void printSs(){
  105.   System.out.println(iStartVal + " - " + iEndVal + "之间共有" + vSs.size() + "个素数:");
  106.   for(int i = 0; i < vSs.size(); ++i){
  107.    System.out.print(vSs.get(i).toString() + "  ");
  108.    if( (i + 1) % iNumPerLine == 0 ){
  109.     System.out.println("");
  110.    }
  111.   }
  112. }

  113. /**
  114.   * 主程序
  115.   * @param args 可能用到的参数
  116.   */
  117. public static void main(String[] args){
  118.   //生成实例
  119.   GetSs gss = new GetSs();
  120.   //输出指定范围内的所有素数
  121.   gss.printSs();
  122. }



  123. }
复制代码


这个是在pudn下载的求素数方法,看起来还不错
回复 使用道具 举报

回帖奖励 +1

  1. import java.math.BigInteger;
  2. public class aaa {
  3.   public static void main(String[] args){
  4.      BigInteger bi = BigInteger.ZERO;  
  5.      while (true) {  
  6.          bi = bi.nextProbablePrime();  
  7.          if (bi.intValue() > 100) {  
  8.              break;  
  9.          }  
  10.          System.out.print(bi + " ");  
  11.      }
  12.   }
  13. }
复制代码


回复 使用道具 举报

回帖奖励 +1

试一试。运气
回复 使用道具 举报

回帖奖励 +1

额,再来一个试一试
回复 使用道具 举报

回帖奖励 +1

回帖看看   
回复 使用道具 举报

回帖奖励 +1

试试手气吧
回复 使用道具 举报

回帖奖励 +1

试试手气,加油
回复 使用道具 举报

回帖奖励 +1

加油黑马,我来了
回复 使用道具 举报

回帖奖励 +1

嘎嘎嘎嘎嘎。好多分
回复 使用道具 举报

回帖奖励 +1

试试试试。看看
回复 使用道具 举报

回帖奖励 +1

回复再来
回复 使用道具 举报

回帖奖励 +1

回复回复。加油
回复 使用道具 举报

回帖奖励 +1

黑马加油。再来一次
回复 使用道具 举报
再来一次,我一定要去黑马,黑马加油。给我分吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马