Java素数判断
题目:输出三到一百之间的素数,输出任意两个整数之间的素数,输出任意两个整数之间最大与最小的十个素数。
代码:
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++,多了许多不知道的方法,也许应用这些方法,能够减少代码量。
                    
                
                
            
        
浙公网安备 33010602011771号