Java - 连续打印5个素数

时间:2016-11-20 22:00:09

标签: java

我的项目是打印0到100之间的素数,但每行显示5个素数。

//Display the output of 5 numbers per row.
          System.out.print(" " + i);
          if(i % 5 == 1) {
              System.out.print("\n");
          }

质数的输出工作正常,我只是努力让它们分配到每行5个值。

当前输出如下:

  

0-100 Prime数字是:

     

2 3 5 7 11

     

13 17 19 23 29 31

     

37 41

     

43 47 53 59 61

     

67 71

     

73 79 83 89 97

这是用于每行调整5个值的代码。

WinForms

4 个答案:

答案 0 :(得分:2)

您无法再次使用i,您需要使用新变量(我使用currentPrime)。 因为i本身就是素数,而不是素数的索引。

此外,您需要在for循环中向i = 1添加更改int i = 1,否则代码将无法编译。

    int currentPrime = 1;

    for (int i = 1; i <= 100; i++) {

        int counter=0;

        for(int num =i; num>=1; num--)
        {
            if(i % num == 0)
            {
                counter = counter + 1;
            }
        }
        if (counter == 2)
        {
            //Display the output of 5 numbers per row.
            System.out.print(" " + i);
            currentPrime++;

            if(currentPrime % 5 == 1)
            {
                System.out.print("\n");
            }
            //Prime number is assigned to the empty string class variable.
            displayPrimes = displayPrimes + i + " ";
        }
    }

答案 1 :(得分:1)

只需添加一个int变量来计算每行打印的素数。当它连续打印5个数字时,它会转到下一行,然后重置计数器(将变量设置为0)。像这样:

int count =0;
for (i = 1; i <= 100; i++) {

        int counter=0;    

        for( num =i; num>=1; num--)
        {
        if(i % num == 0)
    {
        counter = counter + 1;
            }
        }
        if (counter == 2)
        {
            //Display the output of 5 numbers per row.
          System.out.print(" " + i);
          count++;
          if(count == 5) {
              System.out.print("\n");
              count = 0;
          }
     //Prime number is assigned to the empty string class variable.
     displayPrimes = displayPrimes + i + " ";
        }
   }

答案 2 :(得分:1)

通过检查

if (i % 5 == 1)

你正在检查除以5之后的余数是否为1.由于我是你的素数,这只意味着每当你的素数是1而不是5的倍数时会打印一个新行(因此为什么它在11,31,41等之后给了你一个新的一行。

您需要做的是设置一个单独的计数器变量,以跟踪您在该行上打印的素数。每次打印新的素数时都可以递增此变量,然后打印新行并在达到5后重置主计数变量。

答案 3 :(得分:0)

以下是用户提到的指令的代码实现:707090

public class PrimeNumberInRange {

public static void main(String[] args) {

    printPrimeNumbersInRange(2, 1000);
}

// returns true/ false
public static boolean isPrime(int n) {

    if (n < 2) {
        return false;
    }

    for (int i = 2; i <= n / 2; i++) {
        if (n % i == 0) {
            return false;
        }
    }

    return true;
}

// returns the list of number between min and max...
public static void printPrimeNumbersInRange(int min, int max) {

    if (min < 2 || max < 2) {
        System.out.println("Invalid range, should start with at least 2");
    } else {
        int count = 0;
        for (int i = 0; i <= max; i++) {
            
            if (isPrime(i)) {
                    System.out.print(i+" ");
                    count++;
                    
                 if (count % 10 == 0 ) {
                     System.out.println();
                 }

                }
            }

        }
    }

}