如何打印素数到用户输入的整数?

大家下午好,

我目前正在尝试创建一个执行以下操作的程序:

开发一个代码,打印所有素数,直到用户输入的数字。 输出的一个例子:

Enter an integer (2 or above): 19 The prime numbers up to you integer are: 2 3 5 7 11 13 17 19 

不幸的是,还有一个需要满足的“要求”清单:

  • 如果用户输入的数字低于2,则程序应打印一条消息,表明该数字无效,然后停止。
  • 如果数字不能被除1和它本身之外的任何数字整除,则数字是素数。
  • 对于这个程序,为了测试一个数字以查看它是否为素数,你应该尝试将数字除以从2到数字1的每个值,以查看它是否均匀分配。 例如:

    – 看5是否为素数:5不均匀分为2 5不均匀分为3 5不均匀分为4因此5是素数

    – 看9是素数:9不均匀分为2 9除以3均为9因此9不是素数

  • 该程序要求您编写嵌套循环(即循环内的循环)。 将使用一个循环从2到用户的数字进行计数,以便您可以测试这些数字中的每一个以确定它是否为素数。 对于这些数字中的每一个,x:

  • 嵌套循环将检查从2到x-1的所有值,以查看x是否均匀划分。
  • 您将需要使用布尔变量(也称为标志变量)来帮助您确定是否在屏幕上打印数字

上面的问题是关于我的代码到目前为止:

import java.util。*;

public class Something3 {

 public static void main(String[] args) { Scanner kbd = new Scanner(System.in); //Variable declaration. int limit, number; //get input till which prime number to be printed System.out.print("Enter an integer (2 or above): "); limit = kbd.nextInt(); kbd.close(); //Will print prime numbers till the limit (user entered integer). number = 2; if (limit >=2) { System.out.println("The prim numbers up to your interger are: " + limit+"\n"); for(int i = 0; i <= limit;){ //print prime numbers only if(isPrime(number)){ System.out.println(number +"\n"); i++; } number = number + 1; } } else System.out.println("Number is not vaild"); } //Prime number is not divisible by any number other than 1 and itself //return true if number is prime. public static boolean isPrime(int number){ for(int i=2; i==number; i++){ if(number%i == 0){ return false; //Number is divisible, thus not prime. } } return true;//The number is prime. } 

}

极限变量我正在使用这个问题吗? 任何帮助将非常感激。

你的isPrime()方法返回错误的结果。 for循环条件错误i==number应该是i < number

 public static boolean isPrime(int number){ for(int i=2; i*i <= number; i++){ if( number % i == 0){ return false; // Number is divisible, thus not prime. } } return true; //The number is prime. } 

要检查数字是否为素数,您不必检查从2到N的可分性,所有您需要检查到sqrt(N) 。 要查找范围(N)中的素数,请使用Eratosthenes筛选

你的实际问题是数字变量。 这是你的解决方案。 不需要变数。 以下是您的解决方案

 import java.util.*; public class Something3 { public static void main(String[] args) { Scanner kbd = new Scanner(System.in); // Variable declaration. int limit; // get input till which prime number to be printed System.out.print("Enter an integer (2 or above): "); limit = kbd.nextInt(); kbd.close(); if (limit >= 2) { System.out.println("The prim numbers up to your interger are: " + limit + "\n"); for (int i = 1; i <= limit; i++) { // print prime numbers only if (isPrime(i)) { System.out.println(i); } } } else System.out.println("Number is not vaild"); } // Prime number is not divisible by any number other than 1 and itself // return true if number is prime. public static boolean isPrime(int n) { if (n % 2 == 0) // The only even prime is 2. return (n == 2); for (int i = 3; i * i <= n; i += 2) { if (n % i == 0) return false; } return true; } } 
 import java.util.Scanner; class prime { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("enter the value of n"); int n=sc.nextInt(); for(int i=2;i<=n;i++) { int count=0; for(int j=1;j<=i;j++) { if(i%j==0) { count++; } } if(count==2) { System.out.println(i+" "); } } } }