首先,我们要知道质数是什么:
概念:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,也称为素数。 规定:0和1既不是质数,也不是合数,最小的质数为2
思路1:将这个数放在一个循环里用【2,这个数本身)的范围里的自然数来试除它,如果能整除说明不是质数,如果循环完就说明他是个质数。
方法1代码及详情如下:
public class 求质数8_27_3 {
/**第一种方法*/
public static void main(String[] args) {
System.out.println("请输入一个大于1的数:");
int intput=new Scanner(System.in).nextInt();//接受数字
F(intput);//调用求质数的方法
}
public static void F(int intput) {
if(intput==1) {
System.out.println("1不是质数也不是合数!");
return;//返回调用方法处
}
if(intput<1) {
System.out.println("输入错误!退出程序!");
return;//返回调用方法处
}
for(int i=2;i<intput;i++) {//这是除了1和它本身的范围
if(intput%i==0){
//从2到它自身减1的依次进行求余,如能被整除说明它不是一个质数,方法返回到调用方法处
System.out.println(intput+"是个合数!");
return;//返回调用方法处
}
}
//循环走完后,说明没有一个数能整除intput,所以他是个质数
System.out.println(intput+"是质数!");
思路2: 如果一个数不是质数,那么必定是两个数的乘积,而这两个数通常一个大一个小,并且小的小于等于根号n,大的大于等于根号n(数学定理),所以一个数字在2~本身算术平方根这个数字区间内没有遇到能够被整除的数字,那么这个数就不是质数。
例如100=2*50=4*25=5*20=10*10 只需要找2—10这个区间即可。
方法2代码如下:
/**第二种方法*/
//前面与第一个方法一样,不一样的只是循环条件
//Math.sqrt();求算术平方根
for(int i=2;i<Math.sqrt(intput);i++) {//在2~本身算术平方根这个数字区间内没有遇到能够被整除的数字,那么这个数就不是质数。
if(intput%i==0){
//从2到本身算术平方根的依次进行求余,如能被整除说明它不是一个质数,方法返回到调用方法处
System.out.println(intput+"是个合数!");
return;//返回调用方法处
}
}
//循环走完后,说明没有一个数能整除intput,所以他是个质数
System.out.println(intput+"是质数!");
|