【问题标题】:Printing Prime numbers 2 to 500 inclusively [duplicate]打印素数 2 到 500(包括)[重复]
【发布时间】:2014-02-18 23:54:57
【问题描述】:

所以我的任务是创建一个 java 程序,打印 2-500 (含)的所有数字,每行 10 个数字。我已经学习了循环的基础知识和方法的简要介绍。我查看了其他问题/答案,但是,我似乎无法将所有信息组合成可行的代码。

int n;
for (int count = 0; count < 10; count++) {
    for (n=2; n <= 500; n++){
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i != 0)
                System.out.print(i + " ");
        }
    }
System.out.println();    
}

这就是我所拥有的,我正在打印一组非常奇怪的数字。我知道我的 if 声明有问题,而且我知道我没有设置它来正确打印出正确的值,我完全不知所措。

老实说,我仍然无法弄清楚为什么我只需要检查 i 直到 n 的 sqrt。

基本上我希望代码行以某种方式打印出来

2 3 5 7 11 13 17 19 23 29 然后跳到下一行继续

etc etc etc

使用方法是最有效的方法吗?我试图避免它,因为方法是最近才引入的。

【问题讨论】:

  • 为什么要打印i?您确定要打印n?然后,只有在所有可分性测试都失败的情况下。
  • 我已在its duplicate as marked here 下将an answer 发布到此问题。

标签: java methods primes


【解决方案1】:

正如评论中提到的,您的问题已经得到解答。剩下的就是:如何每行打印 10 个数字,或者更准确地说,每次打印 10 个数字时如何跳到下一行。

这是一个想法:

int c = 0;  // This will hold the number of prints
for(int n = 2; n <= 500; n++) {
    // Check if n is prime (already answered), and if it is, print it
    if(isPrime(n) {
        System.out.print(n + " ");
        c++;
    }
    if(c >= 10) {
        System.out.print("\n");
        c = 0;
    }
}

【讨论】:

  • 好的,除了 10 次输出后的断线外,我几乎已经实现了所有功能。所以基本上,main 方法中的 i 被转移到 isPrime 方法中的 n 中,然后与另一个 i 变量进行比较?
【解决方案2】:

类似这样的:

int n;
for (n = 2; n <= 500; n++) {
    double limit = Math.sqrt(n);
    int i;
    for (i = 2; i <= limit; i++) {
        if (n % i == 0) {
            break;
        }
    }
    if (i > limit) {
        System.out.print(n + " ");
    }
}

输出是:

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 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499

【讨论】:

    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2012-06-09
    • 2011-12-20
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多