题目
给定范围n,判断小于n共有多少个素数,并输出所有素数。
思路
如果知道(sqrt(n)]以内的素数表,直接看n能否被这些素数整除即可。但是这条路我没想出来后面怎么做。
只能用很笨的办法去做了:两个数的积为定值n,则一个数变大一个数一定变小,其中一个数必小于等于sqrt(n),则只要整除sqrt(n)以内的数就可以判断是否是质数
其中2是质数,偶数都不是质数(素数)可以不用去判断偶数
代码
public static void main(String[]args){
int n=39;
getPrime(n);
}
private static void getPrime(int n) {
// TODO Auto-generated method stub
System.out.print("质数(素数)有: 2,");
//2是质数,偶数都不是质数(素数)两个数的积为定值n,则一个数变大一个数一定变小,其中一个数必小于等于sqrt(n),则只要整除sqrt(n)以内的数就可以判断是否是质数
for (int i = 3; i < n; i+=2) {
boolean isPrime=true;
for (int j = 3; j <= Math.sqrt(i); j++) {
if(i%j==0)
{
isPrime=false;
break;
}
}
if(isPrime){
System.out.print(" "+i+";");
}
}
}