打印小于N的所有素数时出错(Java)
我正在尝试编写一个程序,它可以打印所有小于或等于输入的数字和找到的素数的素数。例如,输入5将打印2、3和5。我制定了以下代码:打印小于N的所有素数时出错(Java),java,numbers,Java,Numbers,我正在尝试编写一个程序,它可以打印所有小于或等于输入的数字和找到的素数的素数。例如,输入5将打印2、3和5。我制定了以下代码: import java.util.Scanner; public class Sample { public static void main (String args[]){ Scanner sc=new Scanner (System.in); System.out.print("Enter a number:");
import java.util.Scanner;
public class Sample {
public static void main (String args[]){
Scanner sc=new Scanner (System.in);
System.out.print("Enter a number:");
int number=0;
number=Integer.parseInt(sc.nextLine());
int counter=0;
boolean isPrime=true;
if (number<=1){
System.out.println("O prime numbers found.");
} else {
for (int i=2; i<=number;i++){
for (int j=2; j<i;j++){
if (i%j==0){
isPrime=false;
break;
}
}
}
if (isPrime(i)){
System.out.println(i);
counter++;
}
}
System.out.println(counter+ " prime numbers found.");
}
}
有人知道为什么这样不行吗?谢谢。语句块
if (isPrime(i)){
System.out.println(i);
counter++;
}
在使用i的for循环之外
编辑:从代码中,您似乎粘贴了不完整的代码或犯了一些错误。例如,isPrime()函数在哪里定义?真的需要吗?提出这些问题并重新查看代码 在for循环中定义
i
,该循环在if
语句之前关闭。替换此块:
for (int i=2; i<=number;i++){
for (int j=2; j<i;j++){
if (i%j==0){
isPrime=false;
break;
}
}
}
if (isPrime(i)){
System.out.println(i);
counter++;
}
for(int i=2;i以下是您要执行的操作:
在i循环中移动isPrime变量的声明(或至少初始化)
将带有打印的测试移到i循环内,并纠正条件(iPrime是一个变量,而不是一个方法)
if(numberisisPrime(x)
甚至是一个方法???谢谢!我仍然在:if(isPrime(I)){^symbol:methodisprime(int)上遇到“找不到符号”错误位置:类示例1错误我在回答中给出了一个提示。您正在将iPrime作为函数调用。这是您应该做的吗?虽然它指出了OPs代码中的一个主要问题,但这并不能解决System.out.println(i)中抛出的主要错误
statement.Lol…在编辑过程中,您忘记将函数更改为布尔值!事实上。为我辩护,今天是星期五。
for (int i=2; i<=number;i++){
for (int j=2; j<i;j++){
if (i%j==0){
isPrime=false;
break;
}
}
}
if (isPrime(i)){
System.out.println(i);
counter++;
}
for (int i=2; i<=number;i++){
for (int j=2; j<i;j++){
if (i%j==0){
isPrime=false;
break;
}
}
if (isPrime){
System.out.println(i);
counter++;
}
}
if (number<=1){
System.out.println("O prime numbers found.");
} else {
for (int i=2; i<=number;i++){
boolean isPrime=true;
for (int j=2; j<i;j++){
if (i%j==0){
isPrime=false;
break;
}
}
if (isPrime){
System.out.println(i);
counter++;
}
}
}
for (int i=2; i<=number;i++){
if (isPrime(i)) {
System.out.println(i);
counter++;
}
}
static boolean isPrime(int i) {
for (int j=2; j<i;j++){
if (i%j==0){
return false;
}
}
return true;
}