题目:输出三到一百之间的素数,输出任意两个整数之间的素数,输出任意两个整数之间最大与最小的十个素数。

代码:

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++,多了许多不知道的方法,也许应用这些方法,能够减少代码量。