求出100以内的素数(java实现)

j

package test1;
//2018/11/30
//求100以内的所有素数
public class Main10 {
		public static void main(String[] args){
			Main10 test=new Main10();
			System.out.println("100以内的素数:");
			int count=0;
			for(int i=2;i<100;i++) {
				if(test.isPrimeNumber(i)==true) {
					System.out.print(i+" ");
					count++;
					if(count%10==0) {
						System.out.print("\n");
					}
				}
			}	
		}
		
		public boolean isPrimeNumber(int number){
			boolean flag=true;
			if(number<=0) {
				throw new IllegalArgumentException("number是不合法的参数!");
			}
			
			for(int i=2;i<=Math.sqrt(number);i++) {
				if(number%i==0) {
					flag=false;
					break;
				}
			}
			return flag;
		}
}

 

下面是另一种

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//检验一个数是不是素数,如果所有小于它的素数都不能将它整除,那么它就是素数
public class Main11 {
		public static void main(String[] args) {
			List<Integer> primes=getPrimes(100);
			
			System.out.println("100以内素数如下:");
			
			for(int i=0;i<primes.size();i++) {
				Integer prime=primes.get(i);
				System.out.print(prime+" ");
				if(i%10==0) {//每10个换行
					System.out.println();
				}
			}
		}
		
		/*
		 * 求n以内的所有素数
		 * 
		 */
		private static List<Integer> getPrimes(int n){
			List<Integer> result =new ArrayList<Integer>();
			result.add(2);//第一个素数先放入
			for(int i=3;i<=n;i+=2) {  //遍历,减少循环次数,步长为2
				if(!divisble(i,result)) {  //判断是否有素数能被整除
					result.add(i);     //如果不能整除,加入列表List
				}
			}
			return result;  //返回列表list
		}
		
		
		/*
		 * 判断n能否能被整除
		 * 
		 */
		private static boolean divisble(int n,List<Integer> primes) {
			for(Integer prime:primes) {  //遍历列表List
				if(n % prime == 0) {
					return true;
				}
				if(prime>=Math.sqrt(n))   //如果超过平方根,还没找到整除,退出循环
					break;
				
			}
			return false;
		}
}

 

posted @ 2018-11-30 23:05  zw1sh  阅读(2183)  评论(0编辑  收藏  举报