【奥数题】50分拆成10个素数,最大的是几
把50分拆成10个素数之和, 要求其中最大的素数尽可能大,那么这个最大的素数是几? // 把50分拆成10个素数之和,要求其中最大的素数尽可能大,那么这个最大的素数是几?#include<stdio.h>
int main()
{
int i, j, k = 0, m, n, p, s;
for (i = 0;i <= 50;i++) // 求素数并装入 s[] 数组
{
for (j = 2;j < 50;j++)
{
if (i % j == 0)
break;
}
if (i == j)
{
s = i;
k++;
}
}
for (i = 0;i < 50;i++)
{
if (s > 32) // 最小的素数为 2,需要9个,那么最大的数也就只能小于 32
{
m = i - 1;
break;
}
}
for (i = m;i > 2;i--)
{
for (j = 9;j >= 0;j--)
{
for (k = 0;k <= 9 - j;k++)
{
if (s + j * s + k * s > 50)
{
break;
}
// 若要求只输出最大素数的组合,则再定义一个变量 q = 1 即可
if (s + j * s + k * s == 50 && (j + k) == 9)
{
for (n = 1;n <= j;n++)
{
printf("%d ", s);
}
for (p = 1;p <= k;p++)
{
printf("%d ", s);
}
printf("%d\n", s);
break;
}
}
}
}
}
页:
[1]