[英]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.