如果两组由不同的n(n>=3)个正整数组成的数组中,两数组的各个数之和相等,且两数组的各个数从2次幂之和、3次幂之和以至到n-1次幂之和均相等,则这两个数组称为等幂和n元组;
本节从探讨等幂和3元组至等幂和n(n<=6)元组,其中递推关系的建立与实施是重点,也是难点;
等幂和3元组
把6个互不相等的正整数a、b、c、d、e、f分成两组,若这两个数组具有以下两个相等特性:
a+b+c=d+e+f=s
a^2+b^2+c^2=d^2+e^2+f^2=s2
则把这两数组(a、b、c)与(d、e、f)(约定a< b< c,d< e< f,a< d)称为等幂和3元组;
例如(1,5,6)与(2,3,7)就是等幂和3元组:
1+5+6=2+3+7=12
1^2+5^2+6^2=2^2+3^2+7^2=62
给定正整数s,探求和为s的所有等幂和3元组;
1.说明:
设6个正整数存储于b数组b(1),……,b(6)中,同时约定: b(1)、b(2)、b(3)为一组,b(4)、b(5)、b(6)为另一组;
从键盘输入整数s,因6个不同正整数之和至少为21,即输入整数s>=11;
设置b(1)、b(2)与b(4)、b(5)循环,注意到b(1)+b(2)+b(3)=s,且b(1)< b(2)< b(3),因而b(1),b(2)循环取值为:
b(1):1~(s-3)/3,因为b(2)比b(1)至少大2;
b(2):b(1)+1~(s-b(1)-1)/2,因为b(3)比b(2)至少大1;
b(3)=s-b(1)-b(2);
设置b(4),b(5)循环基本同上,只是b(4)>b(1),因而b(4)起点为b(1)+1;
设 s2=b(1)*b(1)+b(2)*b(2)+b(3)*b(3),如果b(4)*b(4)+b(5)*b(5)+b(6)!=s2,则继续探索;
同时注意到两个3元组中若部分相同部分不同,不可能有和与平方和同时相等,因而可省略排除以上6个正整数中是否存在相等的检测;
若