编程求出自然数101-205中的所有素数

解决方案 »

  1.   


    public class panel {    static final int length = 101;    public static void main(String[] args) {
            // 101-205
            Random r = new Random();
            int i = r.nextInt(205)+length;
        }
    }
      

  2.   

    1楼是什么答案?
    给个简单算法
    对于数a,如果2到a的平方根没有一个数能被a整除,那么a就是整数.
      

  3.   

      
     for(int i=101;i<=205;i++){
       int j=(int)(Math.sqrt(i));
        boolean zs=true;
        for(int s=2;s<=j+1;s++){
          if(i%s==0){
           zs=false;
            break;//这个i不是质数
          }
       }  if(zs)//质数
       System.out.println(i);
    }
      

  4.   


    public class TestTest2 {
    public static void main(String[] args){

    for(int i=101;i<150;i+=2){
    boolean flag = false;
    for(int j=2;j<i;j++){
    if(i%j==0){
    flag = true;
    break;
    }
    }
    if(flag){continue;}
    System.out.println("i = "+i);
    }
    }
    }其实可以将j的最大值设为i的平方根。
      

  5.   

    知道什么是素数?lz这种题还是要自己做的,求质数啊,素数啊之类的都是考察最基本的东西,lz自己练练吧,不试着自己去做,永远不会
      

  6.   


    class Test{

    public static void getNumber()
    {

    for(int i=102;i<=205;++i)
    {
    boolean flag = true;
    for(int j=2;j<i;++j)
    {
    //合数
    if(i%j==0)
    {
    flag = false;
    break;
    }
    }
    if(flag){
    flag = false;
    System.out.print(i+" ");
    }

    }
    }


    public static void main(String[] args) {
    getNumber();
    }
    }
      

  7.   

    可以在里层for循环中,把循环减半,效率更高。
    for(int j=2;j<i/2;j++)
      

  8.   

    /*
     写程序就要发挥计算机的优势,不能只从数学原理上来考虑。 本算法如下:
        定义一个 boolean 数组,下标就是待判断的整数。
        2 是第一个素数;
        从 2 开始,把所有的 2 的倍数都清掉(设置为 true)。
        找到下一个素数(就是数组中为 false 的元素)。
        从这个素数开始,把所有它的倍数都清掉。
        重复以上步骤,直到把指定范围内所有的合数(非素数)都清掉。
        从 205 向 101,查找到最大的那个素数。
     */
    public class TestPrime {    public static void main(String[] args) {
            int from = 101;
            int to = 205;
            boolean[] a = new boolean[to+1];
            for (int i=2; i<=to; i++) {
                if (!a[i]) {
                    for (int j=i+i; j<=to; j+=i) {
                        a[j] = true;
                    }
                }
            }        for (int i=to; i>=from; i--) {
                if (!a[i]) {
                    System.out.println("Prime: " + i);
                    break;
                }
            }
        }}
      

  9.   


    public class Prime {
    /**
     * 判断number是否是素数
     * @param number
     * @return
     */
    public static boolean isPrime(int number) {
    // 从2循环到number的平方根即可

    int max = (int) Math.sqrt(number);
    for (int i = 2; i <= max; i++) {
    if (number % i == 0) {
    return false;
    }
    }
    return true;
    } public static void main(String[] args) {
    for(int i = 101;i<=205;i++){
    if(isPrime(i)){
    System.out.println(i);
    }
    }
    }
    }
      

  10.   


    public class SuShu 
    {
    public static void main(String[] args)
    {
    int i,j;
    for(j=101;j<=205;j++)
    {
    for(i=2;i<=j/2;i++){
    if(j%i==0)
    break;

    }
     if(i>j/2)
     System.out.println(j+"是素数!");

    }
    }
    }