整数三角形题目两则
問題1: 周長不大于n,邊長為整數的三角形有多少個?
解法:
???? Function p(ByVal n As Long)'周長n的三角形的個數 If n Mod 2 Then n = n + 3 p = Round(n ^ 2 / 48) End Function Sub Main() Dim i As Long, c For i = 1 To 10 ^ 6 c = c + p(i) Next Debug.Print c End Sub
返回:6944486111111111
?
?
問題2: 周長不大于n,邊長為整數,并且至少有一個角為整數(以角度表示)的三角形有多少個?
解法:
?
Function gcd(ByVal a As Long, ByVal b As Long) As Long If b = 0 Then gcd = a: Exit Function gcd = gcd(b, a Mod b) End Function Sub main() Dim p As Long, c As Long p = 10 ^ 6 c = p / 3 '等邊三角形的個數 Dim m As Long, n As Long, k As Long For n = 1 To Int((Sqr(4 * p + 1) - 3) / 4) + 1 For k = 1 To Int((Sqr(n * n + 2 * p) - 3 * n) / 2) m = n + k If gcd(m, n) = 1 Then If (m - n) Mod 2 = 1 Then c = c + p / (2 * m * (m + n)) If (m - n) Mod 3 > 0 Then c = c + p / (m * (2 * m + 3 * n) + n * n) + p / (5 * m * n + 2 * (m * m + n * n)) + p / (3 * m * (m + n)) End If Next Next Debug.Print c End Sub
?
返回:3055201
轉載于:https://www.cnblogs.com/fengju/archive/2010/02/23/6336191.html
總結
- 上一篇: 文件名(后缀名)修改
- 下一篇: iframe异步加载技术及性能