判断一个正整数是不是质数

淡淡的烟草味﹌ 2024-02-17 14:22 146阅读 0赞

2.1判断一个正整数是不是质数?

  1. package second.suanfa.whp;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. public class Isprime {
  5. /**
  6. * @王海平
  7. */
  8. public static void main(String[] args) {
  9. // TODO 自动生成的方法存根
  10. try {
  11. System.out.println("判断一个数是不是质数!!");
  12. System.out.println("请输入第一个正整数:");
  13. BufferedReader br1 = new BufferedReader(new InputStreamReader(
  14. System.in));
  15. int num1 = Integer.parseInt(br1.readLine());
  16. if (num1 > 0) {
  17. //方法一:
  18. int rs=isPrime(num1);
  19. if(rs==1)
  20. {
  21. System.out.print("方法一:返回"+rs+" "+num1+"是质数!");
  22. }else
  23. {
  24. System.out.print("方法一:返回"+rs+" "+num1+"非质数!");
  25. }
  26. //方法二:
  27. int rs1=isPrime1(num1);
  28. if(rs1==1)
  29. {
  30. System.out.print("方法二:返回"+rs1+" "+num1+"是质数!");
  31. }else
  32. {
  33. System.out.print("方法二:返回"+rs1+" "+num1+"非质数!");
  34. }
  35. } else {
  36. System.out.print("输入的数不是正整数");
  37. }
  38. } catch (Exception e) {
  39. System.out.print("输入的数不正确");
  40. }
  41. }
  42. //方法一:定义法:根据质数除了1和它它本身意外没有其他的约束,采用for循环可得到结果
  43. public static int isPrime(int num1){
  44. int p=1;
  45. for(int i=2;i<=(num1/2);i++){
  46. if(num1%i==0){
  47. p=0;
  48. break;
  49. }
  50. }
  51. return p;
  52. }
  53. //方法二:对定定法我们可以总结发现:偶数一定不是质数,所以我们可以让其被2整除,再而判断从3开始的奇数即可,另外,一个非质数
  54. //由一个数的平方或者一个大于与一个小于其平方根的数相乘而成,所以我们在判断奇数时只要判断到其平方根。这样大大减少循环的次数
  55. public static int isPrime1(int num1){
  56. int p=1;
  57. if(num1%2==0){
  58. p=0;
  59. }
  60. for(int i=3;i<=Math.sqrt(num1);i=i+2){
  61. if(num1%i==0){
  62. p=0;
  63. break;
  64. }
  65. }
  66. return p;
  67. }
  68. }

结果如下:

SouthEastSouthEast 1

发表评论

表情:
评论列表 (有 0 条评论,146人围观)

还没有评论,来说两句吧...

相关阅读