当前位置: 首页 > 知识库问答 >
问题:

检查int是否为prime Java

罗学林
2023-03-14

抱歉发了“修复我的代码”的帖子

编辑:与for循环的语法比质数更相关,现在也解决了。

我的任务是从控制台取一个整数,并打印出(在不同的行上)从1到n的所有素数。我的方法从n开始,检查它的素数,然后将n递增1,并循环直到n=2。为了检查一个数字是否是素数,我运行一个循环,检查跳水的余数x等于零,x从2开始,停止在根(n)。现在这一切在理论上都是可行的,阅读我的代码,我看不出哪里出错了。

public class Prime {
public static boolean isPrime(int n) {
    boolean result = true;
    for (int x = 2; x>=sqrt(n); x++) {
        if ((n % x) == 0) {
            result = false;
            break;
        } else {
            x++;
        }
    }
    return result;
}

public static void main(String[] args) {
    Scanner intIn = new Scanner(System.in);
    int i = intIn.nextInt();
    while (i>=2) {
        if (isPrime(i)) {
            System.out.println(i);
            i--;
        } else {
            i--;
        }
    }
  }
}

例如,输入10将返回10(连同9,8,7,6,5,3),即使isPrime()检查10%2==0,然后将结果设置为false。我在这里错过了什么??

我再次为这个烦人的(有点重复的)问题道歉。

共有3个答案

熊烨
2023-03-14

在循环中,x必须小于或等于,因此更改(int x=2;x)的表达式

浦修文
2023-03-14

将x增加两次,循环的条件应该是x

for (int x = 2; x>=sqrt(n); x++) { // here
    if ((n % x) == 0) {
        result = false;
        break;
    } else {
        x++; // and here
    }
}

正确的逻辑应该是:

public static boolean isPrime(int n) {
    for (int x = 2; x<=sqrt(n); x++) {
        if ((n % x) == 0) {
            return false;
        }
    }
    return true;
}

巫马浩言
2023-03-14

for循环中的条件是继续循环的条件,而不是停止循环的条件。您需要更换

for (int x = 2; x<=sqrt(n); x++) {
    // Here -----^

 类似资料:
  • 我有一个名为< code>Person的对象。 它有几个属性; 我设置了一个person对象,比如< code>Person p = new Person(1,“Joe”);。 1.) 我需要检查对象是否为空;以下表达式是否正确; 2.)我需要知道ID是否包含Int。 但是,java不允许这样做。我该怎么办?

  • 问题内容: 我有一个名为的对象。 它具有几个属性; 我将一个人对象设置为。 1.)我需要检查对象是否不为null;以下表达式正确吗? 2.)我需要知道ID是否包含一个Int。 但是,java不允许这样做。我该如何检查? 问题答案: An 不为null,如果未初始化,则可能为null 。 如果您希望整数可以为null,则需要使用代替。 此外该语句不能为真,因为如果为null,则将抛出a。所以正确的表

  • 问题内容: 基本上,我的同伴一直在说,我可以使用另一种检查int数组是否包含int的方法来缩短代码,尽管他不会告诉我它是什么:P。 当前: 也尝试过此方法,尽管由于某种原因它总是返回false。 有人可以帮我吗? 谢谢。 问题答案: 这是Java 8解决方案

  • 基本上,我的朋友一直在说,我可以通过使用不同的方法来检查int数组是否包含int来缩短我的代码,尽管他不会告诉我它是什么:p。 当前: 也试过了,尽管由于某种原因它总是返回false。 有人能帮帮我吗? 谢谢你。

  • 我正试图在android中创建一个干净的复选框代码,但如果我只是按下按钮而没有选中复选框,则会出错这是清理复选框的代码: 这是我在重置按钮上输入的代码 该复选框是一个声明: 显然,如果未选中复选框并出现错误,tem.getItemId为null。 注:如果你不知道答案或不明白,最好询问或继续,然后投否决票。让其他有帮助的人看到这个问题