题目:输出三到一百之间的素数,输出任意两个整数之间的素数,输出任意两个整数之间最大与最小的十个素数。
代码:
public class Ketang {
public static void main(String args[]) throws Exception {
int number=0; //用于计数输出
//输出3到100之间的素数
System.out.println("三到一百之间的素数如下:");
for(int i=3;i<98;i++){
if(prime(i)==0){
number++;
System.out.print(i+" ");
}
if(number==5){
System.out.println();
number=0;
}
}
System.out.println();
//输出任意两个整数之间的素数
System.out.println("输出任意两个素数之间的素数");
System.out.print("请输入第一个整数:");
int n1=in_Enter(); //调用输入方法
System.out.print("请输入第二个整数:");
int n2=in_Enter();
number=0; //重新计数
int d1=n1>n2?n1:n2; //判断大小
int x1=n1<n2?n1:n2;
int p=0; //用于下面判断两数之间是否素数个数为0
System.out.println("两数之间的素数为:");
for(int i=x1;i<=d1;i++){
if(prime(i)==0){
number++;
p=1;
System.out.print(i+" ");
}
if(number==5){
System.out.println();
number=0;
}
}
if(p==0)
System.out.print("不好意思,经判断,两数之间没有素数!");
System.out.println();
//输出两个数中间的最大与最小十个数
System.out.println("输出两个数中间最大与最小的十个素数");
System.out.print("请输入第一个整数:");
int n3=in_Enter();
System.out.print("请输入第二个整数:");
int n4=in_Enter();
int d2=n3>n4?n3:n4; //判断大小
int x2=n3<n4?n3:n4;
int j=0; //素数数组下标
int sa[]=new int[10]; //素数数组
for(int i=0;i<10;i++){ //赋初值
sa[1]=0;
}
for(int i=x2;i<=d2;i++){ //最小的十个
if(prime(i)==0){
sa[j]=i; //数组赋值
j++; //每赋值成功一个,下标加1
}
if(j==10)
break;
}
outPut(j,sa); //调用输出方法
j=0; //下标为0,重新开始计数
for(int i=d2;i>=x2;i--){ //最大的十个
if(prime(i)==0){
sa[j]=i; //数组赋值
j++; //每赋值成功一个,下标加1
}
if(j==10)
break;
}
outPut(j,sa); //调用输出方法
}
//判断素数
public static int prime(int n){
int is_Prime=1; //用于输出判断
if(n==2) //2是素数
return is_Prime=0;
else
for(int i=2;i<=n/2+1;i++) //判断是否为素数
if(n%i == 0)
return is_Prime=1; return is_Prime=0;
}
//输入方法
public static int in_Enter(){
String enter="";
int num; int n=1;
while(n==1){
try{
BufferedReader in=new BufferedReader(new
InputStreamReader(System.in));
enter=in.readLine();
char[] ca=enter.toCharArray(); //转换为char数组,判断输入是否合法
for(int i=0;i<ca.length;i++){ //判断,如果输入不合理,则重新输入
if(ca[i]<'0'||ca[i]>'9'){ //判断
n=1;
System.out.print("输入不合法!请重新输入:");
break;
}
else
n=0;
}
}catch(IOException e){}
}
return num=Integer.parseInt(enter);
}
//输出方法
public static void outPut(int b,int s[]){
int a=0; //重新计算每行的个数
if(b<10){ //两数中间素数个数不足十个
if(b==0) //两数中间没有素数
System.out.println("两数中间的素数个数为0!");
else{
System.out.println("两数中间只有"+b+"个素数,这几个素数分别为");
for(int i=0;i<b;i++){
System.out.print(s[i]+" ");
a++;
if(a==5){ //每行五个输出
System.out.println();
a=0;
}
}
}
}
else{
System.out.println("这些素数分别为:");
for(int i=0;i<10;i++){
System.out.print(s[i]+" ");
a++;
if(a==5){ //每行五个输出
System.out.println();
a=0;
}
}
}
}
}
得考虑的地方:1)2是素数,在判断素数的方法中得单独判读。2)第二情况得考虑素数个数为零的时候,为零则另作输出。
3)第三个情况的考虑素数个数为零或不足十个的情况。4)输入方法中应该加入判断输入的代码,让程序自动报错,而不是系统报错。
5)Java对比C++,多了许多不知道的方法,也许应用这些方法,能够减少代码量。