素数测试初学者Java

时间:2020-09-10 00:26:53

标签: java

用于测试正数(称为num)的大学作业是否为素数。 我必须使用Do while循环 香港专业教育学院试图代码如下,但未能通过测试

public class Primes {
public static main void (String args[]){
int num = 1;
int 2 = 0;
boolean flag = false;
do {
if (num%i == 1) {
flag = true;
break:
}
num ++

while (i<=num);
{
if (flag = true);
{
System.out.println (num + "is a prime number ");
}
else
{
System.out.prinln (num + "is not a prime number ");
}
}
}
}

2 个答案:

答案 0 :(得分:1)

1。主要功能签名

应该是

public static void main(String args[])

不是

public static main void (String args[])

2。您不能以数字开头的变量名

int 2 = 0;

您可能是说

int i = 0;

3。 do { ... } while(...);

do while循环的格式为

do {
  something();
} while (condition);

4。分号表示语句结束

while (condition); {
  something();
}

在这种情况下,something()不在您的while循环中

5。注意if

中的分配
if (flag = true)

这是将flag分配给true。并且条件始终为true(因为赋值的结果为true)。

6。不是System.out.prinln

它是System.out.println。使用IDE。

最终解决方案

public class Primes {
    public static void main(String args[]) {
        int num = 3;
        int i = 2;
        boolean flag = false;
        do {
            if (num % i == 0) {
                flag = true;
                break;
            }
            i++;
        } while (i < num);
        if (!flag) {
            System.out.println(num + " is a prime number ");
        } else {
            System.out.println(num + " is not a prime number ");
        }
    }
}

我还解决了一些逻辑问题,例如

  1. 您应该增加i而不是num
  2. while (i < num)而不是while (i<=num),否则某些(最后一个)i始终等于num,使所有内容都不是素数
  3. 当标志为true时,数字不是素数。您可能应该反转if逻辑。当您发现可以被整除的东西时,标志为真。这意味着数字不是素数。

有更好的解决方案,但我坚持使用您的格式。

答案 1 :(得分:0)

您有几个不同的问题:

首先,它应该是:

public static void main(String[] args){

第二,第4行的变量没有名称。

您的do while语句的格式也不正确。

另一位张贴者在这里有一个do while循环的好例子: Do-while loop java explanation

此外,仔细阅读分号放置位置的规则。

相关问题