质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1和0既非素数也非合数。合数是由若干个质数相乘而得到的。所以,质数是合数的基础,没有质数就没有合数。
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> ii = new ArrayList<Integer>();
for(int i=2;i<100;i++)
if(matches(i,ii))//如果是质数
ii.add(i);
for(Integer a : ii)
System.out.println(a);
}
private static boolean matches(int i,List<Integer> ii) {
// TODO Auto-generated method stub
if(i == 2)//这里已经保证ii不会为空
return true;
for(int a : ii){//合数是由若干个质数相乘而得到的,非合数就是质数
if(i%a == 0)
return false;
}
return true;
}
下边的效率没有上边的好
public class PrimeNumber{
public static void main(String[] args){
System.out.print("100以内的质数有为:");
int sum=0;
for(int i=2;i<100;i++){
if(isPrimeNumber(i)){
sum+=i;
System.out.print(i+",");
}
}
System.out.println("\n100以内的质数和为:"+sum);
}
public static boolean isPrimeNumber(int number){
for(int i=2;i<number/2+1;i++){
if(number % i==0){
return false;
}
}
return true;
}
}