ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何枚举10^6内的同构数?

如何枚举10^6内的同构数?

作者:绿色风 分类: 时间:2022-08-17 浏览:111
楼主
wjc2090742
Q:如何枚举10^6内的同构数?
A:同构数是会出现在它的平方的右边的数,如5×5=25,6×6=36。
使用下面的代码,下面用循环,递归的方法待花花的大帖:
  1. Sub abc()
  2. Dim i As Long
  3. With CreateObject("scripting.dictionary")
  4.     For i = 1 To 1000000
  5.       If Right$(i ^ 2, Len(CStr(i))) = i Then .Add i, ""
  6.     Next
  7. [A1].Resize(.Count, 1) = WorksheetFunction.Transpose(.keys)
  8. End With
  9. End Sub

同构数.rar
2楼
wqfzqgk
  1. Sub ab()
  2. a = Timer
  3. Dim i As Long
  4. With CreateObject("scripting.dictionary")

  5.     For i = 1 To 1000000 Step 10
  6.       If Right$(i ^ 2, Len(CStr(i))) = i Then .Add i, ""
  7.     Next
  8.     For i = 5 To 1000000 Step 10
  9.       If Right$(i ^ 2, Len(CStr(i))) = i Then .Add i, ""
  10.     Next
  11.     For i = 6 To 1000000 Step 10
  12.       If Right$(i ^ 2, Len(CStr(i))) = i Then .Add i, ""
  13.     Next
  14. [A1].Resize(.Count, 1) = WorksheetFunction.Transpose(.keys)
  15. End With
  16. MsgBox Timer - a
  17. End Sub
3楼
wjc2090742
原来在step上做下文章就快了这么多啊,学习了,我是V白,今后还请多多指导。
4楼
wqfzqgk
互相学习,呵呵
5楼
liuguansky
递归不会,在你的基础优化了下,10^8以内的同构生成在0.015左右
  1. Sub abc()
  2. Const s& = 10 ^ 8
  3. Dim i&, dic, j&, t
  4. t = Timer
  5. Set dic = CreateObject("scripting.dictionary")
  6. dic.Add 1, ""
  7.   i = 5
  8.     Do While i < s
  9.       If i ^ 2 Like "*" & i Then
  10.         dic.Add i, ""
  11.         j = 10 ^ Len(CStr(i))
  12.         i = j + i
  13.       Else: i = i + j
  14.       End If
  15.     Loop
  16.   i = 6
  17.       Do While i < s
  18.       If i ^ 2 Like "*" & i Then
  19.         dic.Add i, ""
  20.         j = 10 ^ Len(CStr(i))
  21.         i = j + i
  22.       Else: i = i + j
  23.       End If
  24.     Loop
  25. Range("b:b").Clear
  26. If dic.Count > 0 Then
  27.   [b1].Resize(dic.Count, 1) = WorksheetFunction.Transpose(dic.keys)
  28. End If
  29. Set dic = Nothing
  30. MsgBox Timer - t
  31. End Sub

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap