我刚刚开始了一门java课程。任务是编写一个代码,输出数字是否为素数。
这就是我所拥有的。它出现了很多错误。我找到了很多答案,但他们都说使用我们尚未学到的线条。
public class PrimeNumbers2 {
public static void main(String[] args) {
int number = 9;
int count = 2;
Boolean prime = true;
if (number % count == 0) {
prime = true;
}
else {
for (count = count + 1) {
if (count + 1>= number) {
prime = false;
}
else
{
prime = false;
}
}
if (prime == true)
{
System.out.println("Number is prime");
}
else
{
System.out.println("number is not prime");
}
}}}
答案 0 :(得分:1)
你应该考虑如何用自然语言表达你的问题。例如:素数是一个只能自行分割的数字和1。或相反的方式:对于大于1且小于我的数字范围内的每个数字,应该没有分隔符。
现在用简单的java代码来制定你的问题,尝试实现你的陈述。
for(int count=2; count < number; count++) {
if(number % count == 0) {
System.out.println("Number is not a prime!");
// Since we are finished return and do no more iterations
return;
}
}
// we iterated all possible numbers and can return successfully
System.out.println("Number is a prime");
请务必事先检查边缘情况。例如。负数。 请注意,这是一个效率低下的解决方案,但直截了当。
答案 1 :(得分:1)
您的代码中存在多个错误和逻辑错误。在这里它被清理干净。
int number = 15;
int count = 2;
boolean prime = true;
for (int i = count; i <= number/2; i++ ) {
if (number % i == 0) {
prime = false;
}
}
if (prime == true)
{
System.out.println("Number is prime");
}
else
{
System.out.println("number is not prime");
}
答案 2 :(得分:0)
如果我们在这里讨论一个超级简单的实现,您可以首先检查该数字是否使用余数运算符,即number % 2 == 0
,然后是prime = true
。如果不是这种情况,请设置count = 3
并设置一个带有终止条件while
的{{1}}循环。在while (count < number)
循环中,检查while
和number
的剩余部分是否为零。如果是,那就是素数。如果没有,请将count
递增1,然后循环继续。