【入门】等差素数组
题目描述
如果两个素数之和的一半仍然是一个素数,则这三个素数可以组成一个等差素数组,如(3+7)/2=5,则(3,5,7)为一个等差素数组,编程求100以内的所有等差素数组。这里列出的3 5 7是符合题目要求的第一个等差素数组。
输入
无
输出
若干行,每行3个数。空格隔开!(每行的三个数从小到大排列,先按第一个数从小到大输出等差素数组,如果第一个数相同,再按第二个数从小到大输出)
样例
输入
输出
3 5 7
......
代码如下:
#include <stdio.h>
#include <stdlib.h>
int sushu(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)
return 0;
}
if(i>n/2&&n>1)
return 1;
}
int a[100]={0};
int main()
{
int i,j,k,avg,avg1,count=0;
for(i=1;i<=100;i++)
{
if(sushu(i)&&i>1)
{
a[count]=i;
count++;
}
}
for(j=0;j<count;j++)
{
for(k=j+1;k<count;k++)
{
avg=(a[k]+a[j])/2;//求出两个素数的平均值
avg1=(a[k]+a[j])%2;//看两个素数之和是否是2的倍数
if(avg1==0&&sushu(avg))//判断两个素数之间的平均值是否为素数,且看两个素数是否就是2的倍数
printf("%d %d %d\n",a[j],avg,a[k]);
}
}
return 0;
}
注意:
这里说的是两个素数之和的一半也是素数,并没有说明这三个素数之间是连续的