【问题标题】:Printing a triangle of prime numbers using for loop使用 for 循环打印素数三角形
【发布时间】:2014-05-13 15:54:53
【问题描述】:

我正在尝试制作一个由素数组成的三角形.. 行数将由用户定义 例如,如果用户给出“4”作为行数,那么程序应该显示一个包含 4 行的素数三角形

input :4

output : 

2
3 5
7 11 13
17 19 23 29

【问题讨论】:

  • 你忘了问问题。
  • 你应该提到,“请帮我做作业!”
  • 我建议你先写一个程序来打印第一个n素数。然后编写程序输出Xs的三角形。然后,您将学到足够的知识将它们组合在一起。 (我假设您的课程涵盖了您需要了解的所有基础知识)。
  • 另外,您忘记包含解决此问题的尝试。如果没有它,您似乎是在试图通过要求我们做功课来作弊,而不是通过询问您在尝试解决此问题时做错了什么来寻求指导。
  • @slim 我尝试了很多模式,我正在练习循环,我是编程新手不工作

标签: java loops primes


【解决方案1】:

这是两个任务:获取素数列表(或类似nextPrime(int))和获取三角形,两者都非常简单。

对于第一个实现,可以看Next Prime number Java only working with certain numbers

对于第二个的实现,只需执行以下操作:

for (int i = 1; i <= n; ++i) {
    for (int j = 0; j < i; ++j) {
        nextPrime = ...
        System.out.print (nextPrime + " ");
    }
    System.out.println ();
}

【讨论】:

    【解决方案2】:

    假设您已经有了质数(足够的数量)。

    int[] primes = ...;
    

    然后为 N 个字符串创建数组是 StringBuilders 并用你的数字填充它们:

    StringBuilder[] builders = new StringBuilder[N];
    int count = 0;
    for(int row = 0; row < N; row++) {
        int size = row + 1;
        builders[row] = new StringBuilder();
        for(int i = 0; i < size; i++) {
            builders[row].append(primes[count++]);
            builders[row].append(' ');
        }
    }
    

    然后你可以打印它们

    for(StringBuilder sb : builders) 
        System.out.println(sb);
    

    【讨论】:

      【解决方案3】:
      //please try these
      import java.util.*;
      public class primePtt1
      {
      public static boolean isPrimeNumber(int num) {
         int c=0;
         for (int i = 1; i <= num; i++) {
            if (num % i == 0)
               c++;
         }
         if (c==2)
            return true;
         else
            return false;
      }
      public static void main(String args[])
          {
              Scanner sc = new Scanner(System.in);
              System.out.print("\nEnter no. of rows : ");
              int rows = sc.nextInt();
              int counter = 2;    
               for (int i = 1; i <= rows; i++) {
               for (int j = 1; j <= i; j++) {
             /* Try to find next prime number by incrementing counter and testing it for primality */
              while(!isPrimeNumber(counter)){
                  counter++;
                  }
              System.out.print(counter+" ");
              counter++;
            }
            System.out.println();
         }
      
      }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        • 2016-01-31
        • 2021-12-19
        相关资源
        最近更新 更多