A - Five, Five Everywhere 思维题
题目:
**题目大意:**输入一个n;输出n个素数,并且每5个素数的和为合成数,合成数就是非素数的意思。
**解题思路:**要求输出n个素数,并且任意5个素数的和为合成数,那么可以挑选n个,个位相同的素数,比如11,31,41,51,61,依次类推。这样保证每5个数的和为5的倍数,它一定是一个合成数,代码的话,写一个判断素数的函数,如果是素数,就存入数组中,如果不是,不存入数组,进行加10的操作,继续进行判断。
具体代码如下:
#include"iostream"
#include"algorithm"
using namespace std;
int sushu(int b)
{
int flag=1;
for(int j=2;j<=b/2;j++)
{
if(b%j==0)
{
flag=0;
return 0;
}
}
if(flag==1)
return 1;
}
int main()
{
int n,a[60];
while(~scanf("%d",&n))
{
for(int i=0,j=11;i<n;i++,j+=10)
{
if(sushu(j))
{
a[i]=j;
continue;
}
else
{
i--;
continue;
}
}
for(int k=0;k<n;k++)
{
if(k==n-1)
printf("%d\n",a[k]);
else
{
printf("%d ",a[k]);
}
}
}
return 0;
}