首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >素数测试,两位数

素数测试,两位数
EN

Stack Overflow用户
提问于 2010-10-28 02:57:17
回答 9查看 4.1K关注 0票数 4

我想打印所有两位数长度的质数。下面是我的代码:

代码语言:javascript
复制
    for(int input = 11; input <= 99; input += 2){
        for(int x = 2; x < (int)Math.sqrt(input) + 1; x++){
            if(input%x != 0){
                System.out.println(input);
                break;
            }else{
                break;
            }
        }
    }

问题是它打印的像35或49这样的数字不是质数。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-10-28 03:13:12

这是可行的。您可以看到输出的here

代码语言:javascript
复制
public class Main {

public static void main(String[] args) {
for(int input = 11; input <= 99; input += 2){
    boolean found = false;
    for(int x = 2; x < (int)Math.sqrt(input) + 1; x++){
        if(input%x == 0){
            found = true;
            break;
        }

    }
    if(!found) {
            System.out.println(input);
    }
}
}
}
票数 2
EN

Stack Overflow用户

发布于 2010-10-28 03:01:17

您的primeness测试不正确。一旦找到一个input不能被除数整除的除数,就停止测试一个数字(input)。

这不是素数的定义-你需要测试input数不能被任何小于它的除数整除-换句话说,你需要测试x的所有值,然后才能将一个数声明为素数。

input可以被x整除时,你可以跳出检查input % x != 0的循环,但当它不可除时,你就不能这样做了-当这个条件为真时,你需要继续检查!

票数 7
EN

Stack Overflow用户

发布于 2010-10-28 03:15:45

我总是喜欢这样的问题,最简短和最明显的答案就是硬编码输出:

代码语言:javascript
复制
System.out.println("11\n13\n17\n19\n23\n29\n31\n37\n41\n43" +
   "\n47\n53\n59\n61\n67\n71\n73\n79\n83\n89\n97");
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4036660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档