在一个区间内打印素数

时间:2014-11-22 12:59:00

标签: java primes

这是我的代码。 我知道这可能是非常复杂的愚蠢错误,但我正在学习! 无论n是什么,它总是只输出2。

public static void prime(int n)
{
    int i;
    int b = 1;
    int d;
    int a =0;
    for (i=1; i!=n; i++){
        while (b!=i){
            d = i / b;
            if (d == i)
                a = 1;
            else
                a = 2;
            b++;
        }
        if (a==1)
            System.out.println( i);
    }

2 个答案:

答案 0 :(得分:2)

我不知道你的奇怪的while循环在查找一个数字是否为素数时会发生什么。

您应该检查n是否可以i2之间的任何数字sqrt(n)整除。

您使用条件if (n%i==0)检查它。

答案 1 :(得分:0)

要检查数字是否为素数,您应该检查该数字是否可以被1整除。这是一个简单的代码片段。

public static void prime (int n){
int countZero=0; //counts the number of times n is divisible by another number
//@var div is the divisor
for (int div=1;div<=n;div++){
      if (n%div==0){
          countZero++; 
       }
      //n is divisible by 1 and itself
      if (countZero==2){ 
         System.out.println(n+", is a prime number");
}