您的位置:首页 > 其它

00001-用穷举法打印1-100的质数,写出完整的程序

2011-11-27 23:57 330 查看
/** 长城信息笔试题 2011.11.24
*  用穷举法打印1-100的质数,写出完整的程序
*  注1:求质数算法中的循环条件 i < (int) Math.sqrt(n) 为什么是n的平方根呢?
*       利用的是一个定理:如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。
*  注2:Java中的if() 中只判断boolean类型,boolean类型与c/c++中的bool类型不一样,boolean只有false和true,
*       且正整数不表示true,0不表示false
*  Made by zs,on Num 27th,2011
*/

public class TestPrintPrime {
public static void main(String args[]){
int count=0;
for (int i = 1; i <=100; i+=2) {
if (Prime(i)) {
System.out.println(i);
count++;
}
}
System.out.println("1-100的质数一共有"+count+"个");

}
public static boolean Prime(int n) {
if (n < 2) return false;
if (n == 2) return true;
for (int i = 2; i < (int) Math.sqrt(n); i++) {
if (0 == n % i) return false;
}
return true;

}
}


定理:
如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根.
比如,50,它的最小质因数是2,它的平方根是7.07xxx,2<=7.07xxx。大家可以多找几个合数试一下。也可以用反证法证明。

设a = bq,因为a是合数,则b和q都是大于1的整数.

又设q是a的最小质因数,即b>=q.

如果q<=根号a 不成立,则必有 q>根号a,此时更有b > 根号a,于是

a = bq > 根号a·根号a = a

出现矛盾,故q <=根号a

证毕.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: