java编程求出2-n之间的所有素数。n由键盘输入。

来源:百度知道 编辑:UC知道 时间:2024/06/27 19:03:35
下面是我自己编的程序,但运行觉得有问题.
我由键盘输入50,但出现的结果是:
请输入n:50
2-50之间的素数:2 3 4 5 6 7
8 9 11 13 15 17
19 23 25 29 31 35
37 41 43 47 49
很明显2,4,6,8,9不是素数,但是却出来了.
想不明为什么,希望有那个高手可以指点.万分感激!

import java.io.*;
public class PrimeNumber{
public static void main(String args[])throws IOException{
BufferedReader br=new BufferedReader(
new InputStreamReader(System.in));
int n1=2;
int n;
int count=0;
System.out.print("请输入n:");
String s=br.readLine();
n=Integer.parseInt(s);
System.out.print(n1+"-"+n+"之间的素数:");
lab:
for(int i=n1;i<=n;i++){
int a=(int)Math.sqrt(i);
for(int k=2;k<a;k++)
if(i%k==0)
continue lab;
System.out.print(i+" ");
count++;
if(count%6==0)
System.out.println();
}
}
}

import java.io.*;
import java.lang.Math;
public class SuShu{
public static void main(String[] args){
try{
BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in));
String s=keyboard.readLine();
int j;
System.out.print("2 ");
for(int i=3;i<=Integer.parseInt(s);i+=2){
int k=(int)Math.sqrt(i)+1;
for( j=2;j<=k;j++)
if(i%j==0)break;
if(j>=k)System.out.print(i+" ");
}
}
catch(Exception e) {
}
}
}