import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n=sc.nextInt();//设置为double类型好直接调用库函数,当然不嫌麻烦也可以自己设计一个整型的开根号函数
boolean f;//用来标记N中为质数的数
if(n<0) {//数据小于零的报错
throw new WrongDataException(n);
}
if(n==0 || n==1) {
System.out.println((int)n+"内不含有质数");
}else if(n==2) {
System.out.println((int)n);
}else {
for(double i=2;i<n;i++) {//小于等于2的进不来,所以前面要排除2
f=true;
for(double j=2;j<=Math.sqrt(i);j++) {//整数的因子必是一大一小,小的那个因子最大不超过该整数的平方根
if(i%j==0) {
f=false;break;//只要找到一个因子,就说明不是质素,直接跳出循环
}
}
if(f) {
System.out.println((int)i);//注意需要类型转换
}
}
}
}
}
class WrongDataException extends RuntimeException{
public WrongDataException(double n) {
System.out.println("数据"+n+"异常!");
}
}
求N以内所有的素数(质数)java详解版
于 2022-01-22 21:41:32 首次发布