*如何求素数?
**
比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数或素数。
所以我们只需要在2~n-1的数中,能找到一个数能整除n,则n为素数。
所以用两个循环遍历就可以得到素数了,为了提高效率我们不需要从2~n-1一个一个判断,只需要判断2—sqrt(n)。
问题1:打印出1—n中所有的素数。
import java.util.*;
public class PrimeNum {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for(int i=2;i<n;i++) {
boolean flag = true;
for(int j=2;j<Math.sqrt(i);j++) {
if(i%j==0) {
flag = false;
break;
}
}
if(flag) {
System.out.printf(" "+i);
}
}
}
}
问题2:给定一个值求这个数小于这个数的最大素数。
import java.util.*;
public class PrimeNum {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//输入要求的值
int max = in.nextInt();
for(int i=max;i>=1;i--) {
int flag=1;
//采用两个数相乘的方式缩小范围
for(int j=2;j*j<=max;j++) {
if(i%j==0) {
//等于0不是素数
flag=0;
break;
}
}
if(flag==0) continue;
else {
System.out.println(i);
break;
}
}
}
}