51 质数的后代
作者: Turbo时间限制: 1S章节: 基本练习(数组)
问题描述 :
如果一个合数由两个质数相乘而得,那么我们就叫它是质数们的直接后代。现在,给你一系列自然数,判断它们是否是质数的直接后代。
输入说明 :
第一行一个正整数T,表示需要判断的自然数数量
接下来T行,每行一个要判断的自然数
1<=T<=20
2<=要判断的自然数<=105
输出说明 :
共T行,依次对于输入中给出的自然数,判断是否为质数的直接后代,是则输出Yes,否则输出No
输入范例 :
4
3
4
6
12
输出范例 :
No
Yes
Yes
No
import java.util.Scanner;
public class test_51 {
/**
* 51 质数的后代
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
int num;
boolean flag;
while (n-->0){
num = sc.nextInt();
sc.nextLine();
flag = false;
for (int i = 2; i <= num; i++) {
if(!isPrimeNumer(i)){
continue;
}else{
if(num%i==0 && isPrimeNumer(num/i)){
flag = true;
break;
}
}
}
if(flag){
System.out.println("Yes");
}else {
System.out.println("No");
}
}
}
private static boolean isPrimeNumer(int n){
if(n<=1){
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if(n%i==0){
return false;
}
}
return true;
}
}