就埃及分数拆分而言,通常拆分的数量越多,拆分方案也越多。 1/2024 拆分为三个埃及分数的方案就有 14318 个。本题的拆分方案数是天文数量级的。
分析:
我们只需要找到一组特解,最好是有规律、易实现的方法。
2024 = 2*1012,1/2024 = 1/1012 * 1/2,可以从 1/2 拆分为两个埃及分数来着手;
1/2 = 1/3+1/6, 这是一个很有用的递推关系式,即:
1/k * (1/2) = 1/k * (1/3) + 1/k * (1/6),
并且,每一次拆分后的第二项以同样规则继续拆分:
1/(3k) * (1/2) = 1/(3k) * (1/3) + 1/(3k) * (1/6),
如此,一直拆分到第 2022 次,即得到 2023个不同的埃及分数。
拆分的结果为:
1/2024
= 1 / ( 3 * 1012 ) + 1 / ( 6 * 1012 )
= 1 / ( 3¹ * 1012 ) + 1 / ( 3² * 1012 ) + 1 / ( 3² * 2 * 1012 )
= 1 / ( 3¹ * 1012 ) + 1 / ( 3² * 1012 ) + 1 / ( 3³ * 1012 ) + … + 1 / ( 3²⁰²² * 1012 ) + 1 / ( 3²⁰²² * 2 * 1012 )
简化为公式表达:
1/2024 = sum [ 1 / ( 3ⁿ * 1012 ) ] + 1 / ( 3²⁰²² * 2 * 1012 ) ;n = [ 1,2022 ] 。
最后一个埃及分数的分母是一个 969 位的大整数。
画蛇添足一下:
写了一段 Fortran 代码,用分数形式进行了验算。附源代码:
$freeform
! 计算 a/b = sum[1/(3^n*1012)]+1/(3^2022*2*1012);n=[1,2022]
! szw_sh@163.com
include 'int1k.for' ! 大整数模块
use big_integers_module
type(big_integer) a,b,c ! a/b 分数累加值,c 第i个分数的分母
c=1012
a=0
b=c
do i=1,2022 ! 累加前2022项
c=c*3 ! 第i个分数的分母
a=a*3+1 ! 通分并累加分数 a/b
b=b*3
end do
c=c*2 ! 计算并累加第2023个分数
a=a*2+1
b=b*2
do i=1,2024,2 ! 对a/b进行约简
ii=i
if(ii.eq.1) ii=2
do while(modulo(a,ii)+modulo(b,ii).eq.0)
a=a/ii
b=b/ii
end do
end do ! 输出计算结果
write(*,'(/a)') '计算 a/b = sum[1/(3^n*1012)]+1/(3^2022*2*1012);n=[1,2022]'
write(*,'(/4a)') 'a/b = ',trim(char(a)),'/',trim(char(b))
write(*,'(a)') trim(char(c))
write(*,*) len_trim(char(c))
end
结果输出:
计算 a/b = sum[1/(3^n*1012)]+1/(3^2022*2*1012);n=[1,2022]
a/b = 1/2024