题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
素数就是不能再进行等分的数。比如:2 3 5 7 11 等。 9 = 3 * 3说明它可以3等分,因而不是素数。
我们国家在 1949 年建国。如果只给你 1 9 4 9 这 4 个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个 4 位的素数呢?
比如:1949,4919 都符合要求。
请你输出能组成的 4位素数的个数,不要罗列这些素数!!
运行限制
• 最大运行时间:1s
• 最大运行内存: 128M
#include<iostream>
#include<algorithm>
using namespace std;
int sushu(int x)
{//如果是素数返回1 ,不是则返回0
for(int i=2;i<x;i++)
{
if(x%i==0)return 0;
}
return 1;
}
int main()
{//将1 9 4 9 这几个数字拆成 4个数字存储在a数组中
int sum=0;
int a[4]={1,4,9,9};//后面使用的next_permutation函数能够对1499这4个元素全排列,打乱顺序,依次检测
do{
int x=a[0]*1000+a[1]*100+a[2]*10+a[3];
if(sushu(x))//如果是素数则sum++
sum++;
}
while(next_permutation(a,a+4));//next_permutation的用法是全排列(需要排列第一个地址,最后一个地址再往后一位)
cout<<sum<<endl;//使用方法:next_permutation(数组头地址,数组尾地址);
//若下一个排列存在,则返回真,如果不存在则返回假
return 0;
}