[英]program to print series of prime numbers using java
此代码是将素数系列打印到给定的限制,但是当我尝试执行此操作时,它将陷入无限循环。
import java.io.*;
class a
{
public static void main(String s[]) throws IOException
{
int count=1;
String st;
System.out.println("how many prime no. do you want");
BufferedReader obj= new BufferedReader (new InputStreamReader (System.in));
st=obj.readLine();
int n=Integer.parseInt(st);
while(count!=n)
{
int num=2;
for(int i=2;i<num;i++)
{
if(num%i==0)
{
count++;
break;
}
}
num++;
}
}
}
问题是循环开始时num的值始终为2,即使您再次说num++
,它也需要num=2
这是start语句,并且永远不会进入for循环,因此可以进行无限循环。
int num=2;
while(count!=n) {
for(int i=2;i<num;i++) {
if(num%i==0) {
count++;
break;
}
}
num++;
}
循环使用USe isPrime(int num)方法生成质数示例如下代码所示
public class PrimeNumbersSeries
{
public boolean isPrime(int num)
{
boolean flag=true;
for(int i=2; i<=num/2; i++)
{
if(num%i==0)
{
flag=false;
}
else
{
flag=true;
}
}
if(num<=1)
{
flag=false;
}
return flag;
}
public static void main(String []args)
{
System.out.println("how many prime no. do you want");
PrimeNumbersSeries prime=new PrimeNumbersSeries();
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int count =0;
int j=1;
while(count!=num)
{
if(prime.isPrime(j))
{
System.out.print(j+", ");
count++;
}
j++;
}
}
}
这是您的工作代码:
import java.io.*;
class A
{
public static void main(String s[]) throws IOException
{
int count=2;
String st;
System.out.println("how many prime no. do you want");
BufferedReader obj= new BufferedReader (new InputStreamReader (System.in));
st=obj.readLine();
boolean isPrime = false;
int n= Integer.parseInt(st);
int num=3;
if(n>=1){
System.out.println(2);
}
while(count<=n)
{
//No need to go up to num. Up to sqrt(num) will do.
for(int i=2;i<=Math.sqrt(num);i++)
{
if(num%i==0)
{
isPrime = false;
break;
}
}
if(isPrime){
System.out.println(num);// Added the print
count++;
}
isPrime = true;
num++;
}
}
}
校正后,我得到了质数序列。
import java.io.*;
class a
{
public static void main(String s[]) throws IOException
{
int count=1,count1=0;
String st;
System.out.println("how many prime no. do you want");
BufferedReader obj= new BufferedReader (new InputStreamReader (System.in));
st=obj.readLine();
int n=Integer.parseInt(st);
int num=2;
while(count<=n)
{
count1=0;
for(int i=2;i<num;i++)
{
if(num%i==0)
{
count1++;
}
}
if(count1==0)
{
System.out.println(num);
count++;
}
num++;
}
}
}
您可以看一下这段代码。
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//How many prime numbers you want to print?
String s = bf.readLine();
int n = Integer.parseInt(s);
int count = 0;
boolean loop = true;
for(int i =2 ; loop ; i++){
if(isPrime(i))
{
System.out.println(i + " ");
count++;
}
if(count == n)
loop = false;
}
}
以下isPrime()方法检查数字是否为质数。 如果数字是素数,则返回true,否则返回false。
public static boolean isPrime(int num) {
boolean prime = true;
for(int i=2 ; i<= Math.sqrt(num);){
if(num % i == 0)
{
prime = false;
break;
}
if(i >= 3)
/* when i>=3 we do not need to check for every number.
For avoiding even numbers i is incremented by 2.
It reduces the number of looping */
i+=2;
else
i++;
}
return prime;
}
}
import java.util.*;
class Prime
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("enter the no of prime nos want: ");
int n2 = sc.nextInt();
int flag = 1 ;
int count = 0 ;
for (int i =2; i<99999;i++ )
{
for (int j=2; j<i;j++ )
{
if (i%j == 0)
{
flag = 0;
break;
}
else
{
flag =1;
}
}
if (flag == 1)
{
System.out.print(i +"\t");
count++ ;
}
if (count == n2)
{
break ;
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.