2、但是已知小数,并不一定存在a,b,c,d的整数解,除非小数集,是整数a,b,c,d计算后的集合,并且都是整除的集合
根据以上分析,给出如下方法:
1、计算出全部A/B的值【a=36,b=34-84】【a=37,b=33-83】... 【a=70,b=1-50】
2、计算出全部C/D的值【d=36,c=44-94】【d=37,c=43-93】...【d=80,c=1-50】【d=81,c=1-49】...【d=100,c=1-30】
3、计算出全部(a/b)*(c/d)的值 ,将以上的全部值作为数据文件【小数点保留位数不同,得到对应的值得精确度就不同】
4、输入小数,在以上数据文件中比较值,如果相等,则打印出对应的abcd,可能存在多组
以上方法有点类似我们查询对数表,供参考。
附件程序:生成保留8位小数的程序,数据120M(包含全部abcd和值)
Private Sub Command1_Click()
Dim sum1, sum2, count1
count1 = 0
ReDim sum1(1, 1 To 1)
For i = 36 To 70 '生成不重复ab
For j = 70 - i To 120 - i
If j > 0 And j <> i Then
count1 = count1 + 1
ReDim Preserve sum1(1, 1 To count1)
sum1(0, count1) = i'a
sum1(1, count1) = j'b
End If
Next
Next
count1 = 0
ReDim sum2(1, 1 To 1)
For i = 36 To 100 '生成不重复cd
For j = 80 - i To 130 - i
If j > 0 And j <> i Then
count1 = count1 + 1
ReDim Preserve sum2(1, 1 To count1)
sum2(0, count1) = i'c
sum2(1, count1) = j'd
End If
Next
Next
Open "d:\1.txt" For Output As #1
For i = 1 To UBound(sum1, 2)
For j = 1 To UBound(sum2, 2)
If sum1(0, i) <> sum2(0, j) And sum1(0, i) <> sum2(1, j) And sum1(1, i) <> sum2(0, j) And sum1(1, i) <> sum2(1, j) Then
Print #1, sum1(0, i) & "/" & sum1(1, i) & "*" & sum2(0, j) & "/" & sum2(1, j) & ",";
Print #1, Format(sum1(0, i) / sum1(1, i) * (sum2(0, j) / sum2(1, j)), "0.00000000")
End If
Next
Label1.Caption = "完成" & Int(i / UBound(sum1, 2) * 10000) / 100
DoEvents
Next
Close #1
MsgBox ("ok")
End Sub
[此贴子已经被作者于2018-12-4 07:13编辑过]