嵌套的循环素数检查器

时间:2014-10-09 04:14:23

标签: java for-loop nested primes

这是我的代码我有点新的编程程序的目标是将所有素数在0和用户输入的值之间,每个都在他们自己的行上

import java.util.Scanner;
import java.math.*;

public class Sforprime{

  public static void main (String[] args){
    double box = 0;
    double boxxx = 0;
    int po = 0;
    int blub = 0;
    int no = 1;
    Scanner scan = new Scanner (System.in);
    System.out.println("input cieling number");
    box = scan.nextInt();
    boxxx = Math.sqrt(box);
    for (int batman = (int)box; batman >= 0; batman--){
      if (no == 1){
        no = 0;
      }
      else if (po == 0){
        System.out.println(blub);
        po = 0;
      }
      blub = batman;

      for (int mot = (int)boxxx; mot >= 2; mot--){
        if (po == 1 ){
        }
        else if (box%mot == 0){
          po++;
        }  
      }
      if (po == 0){
        System.out.println(blub);
      }
    }
  }
}

最终发生的事情是输入号码后没有做任何事情。我在这做错了什么?

2 个答案:

答案 0 :(得分:1)

因为你初始化了int mot =(int)boxxx box%mot将为0,po将始终增加为1,因此永远不会被打印。初始化mot = boxxx-1。但建议你使用上面的程序,因为它更干净

答案 1 :(得分:0)

您可以使用此逻辑:

        int n,p;
        Scanner s=new Scanner(System.in);
        System.out.println(“Enter required number upto which prime numbers are needed: ”);
        n=s.nextInt();
        for(int i=2;i<n;i++)
        {
            p=0;
            for(int j=2;j<i;j++)
            {
                if(i%j==0)
                p=1;
            }
            if(p==0)
                System.out.println(i);
        }