语句是:编写一个读取整数N并打印前N个素数的程序。
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int x = 2;
for(int i = 0; i <= N; i++)
{
int count = 0;
for(int j = 1; j <= x; j++)
if(x%j == 0)
count++;
if(count == 2)
System.out.print(x + " ");
x++;
}
}当我运行这段代码时,它没有给出确切的N个数字。例如,对于N=1 &2,它打印前2个质数,对于N=3& 4,它打印前3个质数,对于N=5& 6,它打印前4个质数,依此类推。这段代码有什么问题?
发布于 2015-11-16 06:10:55
我认为您的程序中有许多缺陷需要修复,因此我决定编写一个更简单、更优雅的程序。
Scanner scan = new Scanner(System.in);
int N = Integer.parseInt( scan.nextLine());
int count = 0;
int num = 2;
while(count != N) { // while count!= number of prime numbers entered keep searching..
boolean prime = true;// to determine whether the number is prime or not
for (int i = 2; i <= Math.sqrt(num); i++) { //efficiency matters
if (num % i == 0) {
prime = false; // if number divides any other number its not a prime so set prime to false and break the loop.
break;
}
}
if (prime) {
count++;
System.out.println(num);
}
num++; see if next number is prime or not.
}发布于 2016-12-15 21:23:19
// Java Program to generate first 'N' Prime Numbers
public class prime
{
public static void main(String[]args)
{
int count = 0, max_count = 100, i;
System.out.println("First "+max_count+" Prime Numbers:");
for(int num=1; count<max_count; num++)
{
for(i=2; num%i != 0; i++);
if(i == num)
{
System.out.print(" "+num);
count++;
}
}
}
}发布于 2016-12-28 13:23:36
使用动态编程:
任何不是素数的数总是可以被数列中它前面的至少一个素数整除。如果任何一个数不能除以它前面的所有质数,那么这个数也是质数
void printPrimeNumbers(int n) {
ArrayList<Integer> primeNumbers = new ArrayList<>();
primeNumbers.add(2);
for (int i = 3; i < n; i+=2) { // skip over even numbers since they are not prime
boolean isPrime = true;
for (Integer prime : primeNumbers) { // check current prime numbers to see if it evenly divides into number
if (i % prime == 0) { // when number is not prime
isPrime = false;
break; // optimization: stop checking when number is already not prime
}
}
if (isPrime) {
primeNumbers.add(i);
}
}
System.out.println(primeNumbers);
}https://stackoverflow.com/questions/33725505
复制相似问题