主题:素数(素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,如31。)
题目1:打印 1 - 100 之间所有的素数
思路:求除以本身和1以外的数余数值为0的个数,若个数为0则为素数。
代码:
public static void main(String[] args) {
int i;
int j;
for (i = 2; i < 101; i++) {
int result = 0;
for (j = 2; j < i; j++) {
if (i % j == 0) {
result++;
}
}
if(result==0) {
System.out.println(i);
}
}
题目2:给定一个数字,判定一个数字是否是素数
思路:求除以本身和1以外的数余数值为0的个数,若个数为0则为素数。
代码:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int i;
int a=0;
for(i=2;i<num;i++){
if(num%i==0){
a++;
}
}
if(a==0){
System.out.println("是素数");
}
else{
System.out.println("不是素数");
}
}
优化题目2:
思路:for循环的上线为根号n。所测数字只需被 2 ~ 根号n之间的每一个整数去除。如果 n 不能被 整除则为素数。
代码:
public static boolean isPrime(int n){
for(int i=2;i<Math.sqrt(n);i++){
if(n%i==0){
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
boolean flg=isPrime(n);
System.out.println(flg);
}