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开始。得到的数进行素数判断

原文地址:https://www.cnblogs.com/ShallByeBye/p/8675132.html