用 0,1,2,3 \cdots 70,1,2,3⋯7 这 88 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。
提示:以 0
0 开始的数字是非法数字。
全排列,判断第一个是不是0就行
#include<iostream>
#include<algorithm>
#include<set>
#include<cmath>
#include<stack>
#include<string>
#include<queue>
#include<vector>
using namespace std;
int prime(int x){
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
int a[10]={0,1,2,3,4,5,6,7};
int cnt=0;
do{
if(a[0]==0) continue;
int sum=0;
for(int i=0;i<8;i++){
sum=sum*10+a[i];
}
if(prime(sum)) cnt++;
}while(next_permutation(a,a+8));
cout<<cnt;
return 0;
}
欢迎大家加入 早起学习群,一起学习一起进步!(群号:642179511)