• JAVA判断质数


    好久没写了,今天做题有点忘了,不会写了。重新做了一份,整理出来。

     1 import java.util.Scanner;
     2 
     3 
     4 public class 判断质数 {
     5     public static boolean isPrimeNumber(int num){
     6         if(num==2)return true;
     7         if(num<2||num%2==0)return false;
     8         for(int i=3;i<=Math.sqrt(num);i+=2){
     9             if(num%i==0){
    10                 return false;
    11             }
    12         }
    13         return true;
    14         
    15     }
    16     public static void main(String[] args) {
    17         Scanner sc=new Scanner(System.in);
    18         int n=sc.nextInt();
    19         if(isPrimeNumber(n)){
    20             System.out.println(n);;
    21         }
    22     }
    23 
    24 }

    例题:

    0,1,2,3⋯78 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。

    提示:以 000 开始的数字是非法数字。

     1 public class 求质数 {
     2     public static boolean isPrime(int num){
     3         if(num==2)return true;
     4         if(num<2||num%2==0) return false;
     5         for(int i=3;i<=Math.sqrt(num);i++){
     6             if(num%i==0)return false;
     7         }
     8         return true;
     9     }
    10     public static void main(String[] args) {
    11         // TODO Auto-generated method stub
    12         boolean used[]=new boolean[8];
    13         for(int i=0;i<8;i++){
    14             used[i]=false;;
    15         }
    16         int num;
    17         int count=0;
    18         for(int a=1;a<8;a++){
    19             used[a]=true;
    20             for(int b=0;b<8;b++){
    21                 if(used[b])continue;
    22                 else used[b]=true;
    23                 for(int c=0;c<8;c++){
    24                     if(used[c])continue;
    25                     else used[c]=true;
    26                     for(int d=0;d<8;d++){
    27                         if(used[d])continue;
    28                         else used[d]=true;
    29                         for(int e=0;e<8;e++){
    30                             if(used[e])continue;
    31                             else used[e]=true;
    32                             for(int f=0;f<8;f++){
    33                                 if(used[f])continue;
    34                                 else used[f]=true;
    35                                 for(int g=0;g<8;g++){
    36                                     if(used[g])continue;
    37                                     else used[g]=true;
    38                                     for(int h=0;h<8;h++){
    39                                         if(used[h])continue;
    40                                         else used[h]=true;
    41                                         num=10000000*a+1000000*b+100000*c+10000*d+1000*e+100*f+10*g+h;
    42                                         if(isPrime(num)){
    43                                             count++;
    44                                         }
    45                                         used[h]=false;
    46                                     }
    47                                     used[g]=false;
    48                                 }
    49                                 used[f]=false;
    50                             }
    51                             used[e]=false;
    52                         }
    53                         used[d]=false;
    54                     }
    55                     used[c]=false;
    56                 }    
    57                 used[b]=false;
    58             }
    59             used[a]=false;
    60             
    61         }
    62         System.out.println(count);
    63         
    64     }
    65 
    66 }

    我用了0-7的全排列,因为第一个数不能为0,所以从1开始。得到的数进行素数判断

  • 相关阅读:
    链接收藏:bullet物理引擎不完全指南
    设计模式的六大原则
    链接错误 2038
    玄天宝录
    第二章 期中架构
    第一章 Linux基础
    13 代理与负载均衡基础
    12 LNMP搭建
    11 搭建博客
    10 Nginx模块介绍
  • 原文地址:https://www.cnblogs.com/ShallByeBye/p/8675132.html
Copyright © 2020-2023  润新知