• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[神梦] 【每日一题】好友数据对 - 2022.11.20 [复制链接]

1#
题目描述

一个数字的真除数是除了自身之外的所有整除数的集合。例如,对于100,它们是1、2、4、5、10、20、25和50。
设 sum(n) 是 n 的这些真除数之和。将 buddy 称为两个正整数,这样每个数的真除数的和比另一个数多一个:
(n,m)是一对伙伴,如果 sum(m)=n+1 和 sum(n)=m+1
例如,48和75就是这样一对:
48的除数是:1、2、3、4、6、8、12、16、24–>和:76=75+1
75的除数是:1、3、5、15、25–>和:49=48+1

【任务】
给定两个正整数 start 和 limit,函数 buddy(start,limit)应该返回buddy对的第一对(n m),
这样n(正整数)就在 start 和 limits 之间;m可以大于极限,并且必须大于n
如果没有满足条件的好友数据对,则返回 “Nothing”

【示例】:
buddy(10,50)返回[48,75]
buddy(48,50)返回[48,75]

题目难度:简单
题目来源:Buddy Pairs II | Codewars
题目交流: 584781753
  1. Import "SmAssert.dll"

  2. Function 好友数据对(开始数字, 结束数字)
  3.     // 您的代码写在这里
  4. End Function


  5. SmAssert.That 好友数据对(10, 50), "=", Array(48, 75)
  6. SmAssert.That 好友数据对(2177, 4357), "=", "Nothing"
复制代码

参考题解

  1. Import "SmAssert.dll"

  2. '求因子数
  3. Function factor(n)
  4.     Dim res    ' As Long
  5.     Dim i    ' As Long
  6.     res = 1
  7.     'SmPrint "Sqr("&n&")=", Sqr(n), " Int(Sqr("&n&"))=", Int(Sqr(n))
  8.     For i = 2 To Int(Sqr(n)) + 1
  9.         If n Mod i = 0 Then
  10.             'SmPrint "(i <> n \ i)=", i, "<>", n \ i
  11.             If i <> n \ i Then
  12.                 res = res + i + n \ i
  13.             Else
  14.                 res = res + i
  15.             End If
  16.         End If
  17.     Next
  18.     'SmPrint "res=", res
  19.     factor = res
  20. End Function
  21. Function 好友数据对(开始数字, 结束数字)
  22.     
  23.     '【作者】:神梦无痕
  24.     '【QQ】:1042207232
  25.     '【Q群】:584781753
  26.     
  27.     Dim n        ' As Long
  28.     Dim res        ' As Long
  29.     Dim buddy    ' As Variant
  30.     
  31.     n = 开始数字
  32.     buddy = "Nothing"
  33.     Do While (n <= 结束数字)
  34.         res = factor(n)
  35.         If res - 1 <= n Or factor(res - 1) - 1 <> n Then
  36.             n = n + 1
  37.         Else
  38.             buddy = Array(n, res - 1)
  39.             Exit Do
  40.         End If
  41.     Loop
  42.     好友数据对 = buddy
  43.     'SmPrint buddy
  44. End Function


  45. SmAssert.That 好友数据对(10, 50), "=", Array(48, 75)
  46. SmAssert.That 好友数据对(2177, 4357), "=", "Nothing"
复制代码










插件下载

 
【插件】神梦断言插件 SmAssert.dll,帮助开发者发现业务逻辑错误

2#

顶大佬

3#


发新话题 回复该主题