计算一个非常大的整数的素因子

dojixo6280

我在使用Python时遇到了一个有趣的问题。我的任务是计算给定数字的所有素数。这是我的代码:

import math

def func(number):
    while number % 2 == 0:
        number = number / 2
        print("2")

    for i in range(3, math.ceil(math.sqrt(number)) + 1, 2):
        while number % i == 0:
            number = number / i
            print(i)

    if number > 2:
        print(str(int(number)))

通常,此代码有效,没有问题。不过,请说我们通过211,111,122,222,223,420func它将打印以下因素:2, 2, 2, 2, 2, 2, 19, 97, 178980536338这显然是不正确的,因为我们要查找的因子的数量以零结尾,这意味着它的因子中必须至少有一个5。对?实际上,如果您乘以打印因子,则结果将是211,111,122,222,223,424(比传递的数字多四个单位)。我究竟做错了什么?

凯尔伍德

使用//代替/在Python 3中,/运算符为您提供了一个浮点数,其中引入了不准确性。如果//改用,您将坚持使用整数,这将为您提供正确的答案。

def func(number):
    while number % 2 == 0:
        number = number // 2
        print(2)
    for i in range(3, math.ceil(math.sqrt(number)) + 1, 2):
        while number % i == 0:
            number = number // i
            print(i)
    if number > 2:
        print(number)

func(211111122222223420)

2
2
5
1181
1321
1747
3872893

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在python中打印一个非常大的整数

一个非常非常大的div

插入一个非常大的整数数组作为标准输入

在c中创建一个只能使用函数printf和putchar的计算器,并且可以接受非常大的整数

遍历一个非常大的列表

一个非常大的 IN (ids) 语句的性能问题

找到一个非常大的整数平方根的有效算法是什么?

输入一个非常大的整数会产生一个四舍五入的数字节点js

使用GMP从公式计算非常大的整数

我编写了一个计算collatz猜想的程序,它可以工作但不能计算非常大的数字,我该如何解决这个问题?

计算非常大的功率

比较三个非常大的数组并创建一个新对象

如何合并同一个非常大的项目的 2 个版本

在一个非常大的数组中计算字符串的实例并将该值添加到哈希值

有没有办法有效地计算Cassandra中一个非常大的分区的行?

什么是处理与SQL一个“非常大的库存最好的方法是什么?

在满足条件的非常大的内存图中获取下一个元素的索引

在UNIX shell中删除一个非常大的文件的前n个字符

如何在R包中保存一个非常大的.rda文件

在HDFS中将多个文本文件串联为一个非常大的文件

将变量分配给一个非常大的数组使其未定义

用double类型定义一个非常大的2D数组

SparkR Stage X 包含一个非常大的任务

我应该如何存储一个非常大的数据类型

如何在并行R中填充一个非常大的数组

如何从C#的末尾读取一个非常大的文件?

并行处理一个非常大的矩阵从n ^ 2 x 3到nxn的变换?

读取非常大的一个班轮文本文件

非常大阶乘的最后一个非零数字