O(N) 中直到 N 为止的数字的约数计数?

2023-12-06

因此,我们可以使用 sieve 在 O(NlogN) 算法中计算从 1 到 N 的每个数字的约数:

int n;
cin >> n;
for (int i = 1; i <= n; i++) {
    for (int j = i; j <= n; j += i) {
        cnt[j]++; //// here cnt[x] means count of divisors of x
    }
}

有没有办法减少到O(N)? 提前致谢。


这是对@גלעדברקן解决方案的简单优化。不要使用集合,而是使用数组。这大约是设定版本的 10 倍。

n = 100

answer = [None for i in range(0, n+1)]
answer[1] = 1

small_factors = [1]
p = 1
while (p < n):
    p = p + 1
    if answer[p] is None:
        print("\n\nPrime: " + str(p))
        limit = n / p
        new_small_factors = []
        for i in small_factors:
            j = i
            while j <= limit:
                new_small_factors.append(j)
                answer[j * p] = answer[j] + answer[i]
                j = j * p
        small_factors = new_small_factors

print("\n\nAnswer: " + str([(k,d) for k,d in enumerate(answer)]))

值得注意的是,这也是一个 O(n) 的素数枚举算法。然而,通过使用由所有小于尺寸的素数生成的轮子log(n)/2它可以及时创建一个素数列表O(n/log(log(n))).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

O(N) 中直到 N 为止的数字的约数计数? 的相关文章

  • 在 O(n) 时间内运行的指数乘法算法?

    我正在读一本算法教科书 我被这个问题难住了 假设我们要计算值 x y 其中 x 和 y 为正数 分别具有 m 和 n 位的整数 解决该问题的一种方法是执行 y 1 乘以 x 你能给出一个仅使用 O n 乘法步骤的更有效的算法吗 这会是一个分
  • 给定与总和匹配的长度的唯一 3 位数字 (-1,0,1) 序列的数量

    假设您有一个长度为 n 即空格数 的垂直游戏板 你有一个三面骰子 有以下选项 前进一 停留和后退 如果您低于或高于棋盘游戏空间的数量 则该游戏无效 一旦到达棋盘末端 唯一有效的动作就是 停留 给定确切的骰子投掷次数 t 是否可以通过算法计算
  • 添加到数组连续数字

    这是我向SO提出的第一个问题 我希望能答对 在 PHP 中 如果你不会 Python 或伪语言也可以 给定一个包含 n 个元素的数组 old array 1 2 3 5 7 8 9 20 21 23 29 我需要向新数组添加连续数字 如果不
  • 当目标是查找某个字符串的所有出现情况时,KMP 最坏情况的复杂度是多少?

    我还想知道哪种算法在查找另一个字符串中所有出现的字符串时具有最坏情况的复杂性 博耶 摩尔算法似乎具有线性时间复杂度 KMP 算法在查找字符串中所有出现的模式时具有线性复杂度 如 Boyer Moore 算法1 如果您尝试在 aaaaaaaa
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 交换两个向量之间的值,使两个向量的 max_element 之和最小

    这是 Codechef 的问题 但请耐心等待 https www codechef com ZCOPRAC problems ZCO16001 https www codechef com ZCOPRAC problems ZCO16001
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 如何从二叉搜索树中均匀随机地返回节点?

    给定一个 BST 可能平衡也可能不平衡 如何能够均匀地随机返回 任何 节点 一个限制是您不能使用外部索引数据结构 您必须以每个节点都有平等被访问的机会的方式遍历树 这个问题让我困惑了好一阵子 如果我们确实可以使用外部哈希表 指针 我们可以对
  • cordova 使用什么 js“引擎”?

    Cordova 使用什么 JS 引擎 它是特定于平台的还是跨所有平台的一个标准 意味着 iOS 的 safari 和 Android 的 chrome 以及 Windows 可能的 IE 标准 或者跨所有平台的 Cordova JS 引擎
  • 使用FFT算法计算

    给定在平面上的点 1 0 2 0 n 0 上发现的一组 n 个粒子电荷载流子 在 i 0 点发现的粒子电荷记为 Qi 作用在粒子上的力由以下公式给出 C is a Coulomb s constant 给出一个算法来计算 Fi 对于总复杂度
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 线性代数如何在算法中使用?

    我的几个同行都提到 学习算法时 线性代数 非常重要 我研究了各种算法并学习了一些线性代数课程 但我没有看到其中的联系 那么线性代数如何应用在算法中呢 例如 图的连接矩阵可以带来哪些有趣的事情 三个具体例子 线性代数是现代 3D 图形的基础
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 高维最近邻搜索的最佳数据结构

    我实际上正在处理高维数据 50 000 100 000 个特征 并且必须对其执行最近邻搜索 我知道随着维度的增长 KD 树的性能很差 而且我还了解到 一般来说 所有空间分区数据结构都倾向于对高维数据执行详尽的搜索 此外 还有两个重要事实需要
  • 寻找距离原点最近的 100 颗恒星的算法

    首先让我提出正确的问题 问 有一个文件包含超过一百万个点 x y 每个点代表一颗星星 a b 处有一颗行星地球 现在 任务是构建一种算法 返回距离地球最近的 100 颗恒星 您的算法的时间和空间复杂度是多少 这个问题在各种采访中被问过很多次
  • 我需要一个支持高效随机访问和 O(k) 插入和删除的容器

    我再次尝试问同样的问题question https stackoverflow com questions 3808708 delete parts of a dynamic array and grow other 但我最终提出了一个不同
  • 解释一下从 N 个给定集合中的每一个中给出第 K 个最大数字的示例?

    今天我尝试解决一个Facebook 编程挑战赛 https facebook interviewstreet com recruit challenges 我遇到的挑战是 酒吧问题 可以找到here https github com alo
  • 有人可以解释以下异或属性

    我的一个论坛提到给定的数组n数字 arr 0 n 1 以下条件成立 is the xor运算符 f l r f 0 r f 0 l 1 where f l r arr l arr l 1 arr r 我检查了上面的数组数量和不同的值l an
  • 无需构建树即可预测霍夫曼压缩比

    我有一个二进制文件 我知道其中每个符号出现的次数 如果我要使用霍夫曼算法压缩它 我需要预测压缩文件的长度 我只对假设的输出长度感兴趣 而不对单个符号的代码感兴趣 因此构建霍夫曼树似乎是多余的 作为一个例子 我需要得到类似的东西 包含 4 个

随机推荐

  • 为什么 strcmp 在 c 中不起作用? [复制]

    这个问题在这里已经有答案了 我刚刚开始学习 c 我想尝试 strcmp 函数 但如果我运行它 它总是给我结果 1 我输入什么字符串并不重要 由于第一个字符串比第二个字符串短 因此我期望结果为 1 include
  • 准备 JNA 以在 Eclipse 中使用

    背景 我正在做机器学习研究 并且想使用FANN构建神经网络的库 源代码是用 C 编写的 但我需要对其进行包装 以便我可以将它与我们创建的许多 Java 类一起使用 问题 该网站提供了一个已广受好评的名为 fannj 的包装软件的链接 它的依
  • 变量和打印变量之间的区别[重复]

    这个问题在这里已经有答案了 我有以下代码 假设我正在 IDLE 中逐行输入 coding utf 8 s u My Currency is s print s for s 我得到一个输出 u My Currency is xa3 for p
  • 如何防止JasperReports TextField中的重复数据

    我在用贾斯珀报告文本字段数据存在一些问题 请继续下一页 我在详细信息带中有 3 个文本字段 带 splitType 拉伸 每个文本字段都有边框 并且 isPrintWhenDetailOverflows 参数设置为 true 当文本字段中的
  • 内部编译器错误:总线错误

    我试图制作一个带有详细信息视图的 UITableView 但出现两个错误 在以下代码之后 我得到了两次相同的错误 内部编译器错误 总线错误 我不知道为什么 有人能帮我吗 您可以在下面找到代码的图像here void tableView UI
  • ASP.NET:为什么身份验证超时后 FormsAuthenticationTicket 为空?

    我正在根据我之前的问题和答案实现身份验证超时检测机 制here 我已经实现了一个 HTTP 模块 该模块使用 AuthenticateRequest 事件来运行代码来捕获身份验证期限是否已过期 执行此操作的代码如下 public class
  • Python - 是否可以在 Discord.py-v1.0 中 wait_for 一个或另一个事件?

    有没有可以用的wait for以这样的方式 它将等待reaction add or reaction remove 我见过有on reaction add and on reaction remove功能 但我想要一种没有这些功能的方法 我
  • 在android中将音频注入语音流

    我有一个想法 为愚蠢的人构建一个 Android 应用程序 可以帮助他们接听电话 我想将文本转换为语音 然后通过通话流传输 在android平台上 仍然无法播放音频以便对方在通话过程中听到吗 抱歉 简短的回答似乎仍然是否定的 我很乐意在这一
  • 将 Visual Studio Code 连接到远程 Mysql 数据库

    我知道这应该更加集中 但我为此浪费了一整天的时间 我无法弄清楚 我正在尝试使用任何可用的 VS Code 扩展连接到远程 MySQL 数据库 我尝试使用SQLTools with MySQL MariaDB 插件 适用于 VS Code 的
  • mysql 按计数排序性能

    我发现以下内容有点令人困惑 如果我执行以下查询 当按索引值 关键字 排序时 需要 0 0008 秒 但当按 计数 排序时 需要 3 秒以上 以下过程大约需要 0 0008 秒 SELECT keyword COUNT DISTINCT pm
  • 计算行总和的平均值,无需在 Excel 中创建新列

    这是我的矩阵的示例 A B C D E 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 2 1 您可以将每一行视为受访者 将每一列视为调查问卷上的一个项目 我的目标是取每行总和的平均值 即每个受访者的总分 无需创建新列并考虑
  • 如何让一件物品在另一件物品开始收缩之前完全收缩?

    我试图创建一个随着视口变小而消失的边距 同时主要内容尽可能长时间地保持相同的大小 该边距应该有最大尺寸 因此使用auto是不可能的 换句话说 我的问题是如何控制网站上不同项目的收缩优先级 Flexbox 模型允许设置ratio收缩 但不是收
  • 如何迭代 DOM 树?

    我正在开发一个使用树结构的网站 其方式如下 创建一个列表 如果该列表的元素本身就是一个列表 则使用appendChild将其附加到第一个列表 大列表放在一个名为 tree 的 div 中 我想访问 div 树 的内容并通过节点来显示它们 我
  • zend框架中的密码确认

    我将此类添加到library My Validate Password Confirmation php
  • 将属性添加到现有类

    我有一个私有类 用于实现某些属性 因此 我没有能力修改实际的私有类 并且不想使用继承来创建我自己的类来代替它 有没有办法向该私有类添加属性 Thanks 如果您可以访问所需类中的数据 并且可以使用方法而不是属性 请查看扩展方法 在 C 3
  • Python 的多种字符串格式化方式 — 旧的方式是否(将要)被弃用?

    Python 至少有六种格式化字符串的方法 In 1 world Earth method 1a In 2 Hello s world Out 2 Hello Earth method 1b In 3 Hello planet s plan
  • 使用 GoolgeProvider 的 NextAuth 不会在会话回调中返回用户

    突然我无法再访问注册用户的电子邮件地址 我使用 NextAuth 和 Google 作为提供商 到目前为止 一切顺利 实际上 注册成功后 用户的电子邮件应该是由Google 发送的 在 MongoDB 数据库中 用户表照常创建 用户和电子邮
  • 登录后重定向 laravel 7 [重复]

    这个问题在这里已经有答案了 我想在登录后将用户重定向到 details 但它将我重定向到 home 登录控制器 php public function authenticate Request request credentials req
  • 对 JSON 键进行排序并与匹配值合并

    我的 JSON 看起来像这样 json type big date 2012 12 08 qty 6 type small date 2012 12 08 qty 9 type big date 2012 12 15 qty 4 type
  • O(N) 中直到 N 为止的数字的约数计数?

    因此 我们可以使用 sieve 在 O NlogN 算法中计算从 1 到 N 的每个数字的约数 int n cin gt gt n for int i 1 i lt n i for int j i j lt n j i cnt j here