|
发表于 2022-4-25 15:12:27
|
显示全部楼层
浙江省温州市
满足这些条件的素数,远不止50个,所以我在下面的代码中定义了一个不会超过大小的二维数组:
#include <stdio.h>
int IsPrime(int num)
{
for (int i = 2; i < num; i++)
{
if (num % i == 0)
{
return 0;
}
}
return 1;
}
void AddPrimeToArray(int (*data)[4], int *len)
{
*len = 0;
for (int i = 2; i <= 30; i++)
{
for (int j = 2; IsPrime(i) && j <= 30; j++)
{
for (int k = 2; IsPrime(j) && k <= 30; k++)
{
int t = i + j + k;
if (IsPrime(t))
{
data[*len][0] = t;
data[*len][1] = i;
data[*len][2] = j;
data[(*len)++][3] = k;
}
}
}
}
}
void PutPrimeArray(int (*data)[4], int *len)
{
printf("满足条件的三元组的个数: %d个\n", *len);
for (int i = 0; i < *len; i++)
{
printf("第%d个:(%d, %d, %d),和为 %d\n", i + 1, data[i][1], data[i][2], data[i][3], data[i][0]);
}
}
int main()
{
int data[30000][4] = { 0 };
int len = 0;
AddPrimeToArray(data, &len);
PutPrimeArray(data, &len);
return 0;
} |
|