整数三角形题目两则

问题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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值