题目描述
费马大定理断言: 当整数n>2时,关 于 a,b,c 的方程 a*n =b*n+c*n 没有正整数解。该定理被提出后, 历经三百多年, 经历多人猜想辩证, 最终在1995 年被英国数学家安德鲁·怀尔斯证明。当然, 可以找到大于1的 4 个整数满足完美立方等式: a3 =b3+c3+d3 (例如123 =63+83+103)。 编写一个程序, 对于任意给定的正整数 N(N≤ 100) 寻 找所有的四元组 (a,b,c,d) 满足 a^3 =b^3 +c^3 + d^3 , 其中 1<a,b,c,d ≤N
输入
正整数N(N≤100)
输出
按照a的值从小到大, 每行输出一个完美立方等式 ,其中 b,c,d按照非降序排列输出。若两个完美立方等式中 a 的值相同, 则b 值小的先输出; 在 b值相等的情况下, c 值小的先输出; 在b,c都 相等的情况下, d 值小的先输出。
输入输出样例
样例输入 #1
24
样例输出 #1
Cube = 6, Triple = (3, 4, 5)
Cube = 12, Triple = (6, 8, 10)
Cube = 18, Triple = (2, 12, 16)
Cube = 18, Triple = (9, 12, 15)
Cube = 19, Triple = (3, 10, 18)
Cube = 20, Triple = (7, 14, 17)
Cube = 24, Triple = (12, 16, 20)
解答:
#include<stdio.h>
int main() {
int i, n, a, b, c, d;
scanf("%d", &n);
for (a = 2; a <= n; a++)
{
for (b = 2; b <= a - 1; b++)
{
for (c = b; c <= a - 1; c++)
{
for (d = c; d <= a - 1; d++)
{
if (a * a * a == b * b * b + c * c * c + d * d * d)
{
printf("Cube = %d, Triple = (%d, %d, %d)\n", a, b, c, d);
}
}
}
}
}
return 0;
}