判断一个正整数是不是质数
2.1判断一个正整数是不是质数?
package second.suanfa.whp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Isprime {
/**
* @王海平
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
System.out.println("判断一个数是不是质数!!");
System.out.println("请输入第一个正整数:");
BufferedReader br1 = new BufferedReader(new InputStreamReader(
System.in));
int num1 = Integer.parseInt(br1.readLine());
if (num1 > 0) {
//方法一:
int rs=isPrime(num1);
if(rs==1)
{
System.out.print("方法一:返回"+rs+" "+num1+"是质数!");
}else
{
System.out.print("方法一:返回"+rs+" "+num1+"非质数!");
}
//方法二:
int rs1=isPrime1(num1);
if(rs1==1)
{
System.out.print("方法二:返回"+rs1+" "+num1+"是质数!");
}else
{
System.out.print("方法二:返回"+rs1+" "+num1+"非质数!");
}
} else {
System.out.print("输入的数不是正整数");
}
} catch (Exception e) {
System.out.print("输入的数不正确");
}
}
//方法一:定义法:根据质数除了1和它它本身意外没有其他的约束,采用for循环可得到结果
public static int isPrime(int num1){
int p=1;
for(int i=2;i<=(num1/2);i++){
if(num1%i==0){
p=0;
break;
}
}
return p;
}
//方法二:对定定法我们可以总结发现:偶数一定不是质数,所以我们可以让其被2整除,再而判断从3开始的奇数即可,另外,一个非质数
//由一个数的平方或者一个大于与一个小于其平方根的数相乘而成,所以我们在判断奇数时只要判断到其平方根。这样大大减少循环的次数
public static int isPrime1(int num1){
int p=1;
if(num1%2==0){
p=0;
}
for(int i=3;i<=Math.sqrt(num1);i=i+2){
if(num1%i==0){
p=0;
break;
}
}
return p;
}
}
结果如下:
还没有评论,来说两句吧...