标签: factoring

Chudnovsky二元分裂和分解

本文中,给出了使用二进制分裂的Chudnovsky pi公式的快速递归公式.在python中:

C = 640320
C3_OVER_24 = C**3 // 24
def bs(a, b):
    if b - a == 1:
        if a == 0:
            Pab = Qab = 1
        else:
            Pab = (6*a-5)*(2*a-1)*(6*a-1)
            Qab = a*a*a*C3_OVER_24
        Tab = Pab * (13591409 + 545140134*a) # a(a) * p(a)
        if a & 1:
            Tab = -Tab
    else:
        m = (a + b) // 2
        Pam, Qam, Tam = bs(a, m)
        Pmb, Qmb, Tmb = bs(m, b)

        Pab = Pam * Pmb …
Run Code Online (Sandbox Code Playgroud)

c recursion pi gmp factoring

22
推荐指数
2
解决办法
703
查看次数

是否有算法只用很小的因子找到最接近的数字?

我需要做一些实时DFT,当我可以将样本数量分解成小因子时,我使用的算法效率最高.

假设我有一个数字n和因素2, 3, 5.如何找到最接近的数字(相比较n),其素数因子化除了没有数字2,3,5

n几乎总是在下面,50,000所以粗暴的强迫可能是一个好主意.

algorithm factoring

12
推荐指数
1
解决办法
404
查看次数

将整数因式分解为尽可能接近平方的值

我有一个函数可以逐字节读取文件并将其转换为浮点数组。它还返回所述数组中的元素数量。现在我想将数组重塑为二维数组,形状尽可能接近正方形。

我们以数字 800 为例:

sqrt(800) = 28.427...

现在我可以通过反复试验找出25*32我正在寻找的解决方案。如果整数相乘的结果太高,我会递减sqrt(四舍五入到最接近的整数),如果结果太低,我会增加它们。

我知道对素数执行此操作的算法,但这对我来说不是必需的。我的问题是,即使我实现的蛮力方法有时也会卡住并且永远无法完成(这就是我任意限制迭代的原因):

import math

def factor_int(n):
    nsqrt = math.ceil(math.sqrt(n))

    factors = [nsqrt, nsqrt]
    cd = 0
    result = factors[0] * factors[1]
    ii = 0
    while (result != n or ii > 10000):
        if(result > n):
            factors[cd] -= 1
        else:
            factors[cd] += 1
        result = factors[0] * factors[1]
        print factors, result
        cd = 1 - cd
        ii += 1

    return "resulting factors: {0}".format(factors)

input = 80000
factors = factor_int(input)
Run Code Online (Sandbox Code Playgroud)

使用上面的脚本,输出将陷入循环打印 …

python algorithm cython factoring

6
推荐指数
1
解决办法
2155
查看次数

在幼稚的整数分解中,Haskell比Python慢​​吗?

我正在学习数学课程,我们必须做一些整数分解作为问题的中间步骤.我决定编写一个Python程序来为我做这个(我们没有测试我们的因素能力,所以这完全在板上).该计划如下:

#!/usr/bin/env python3

import math
import sys

# Return a list representing the prime factorization of n. The factorization is
#   found using trial division (highly inefficient).
def factorize(n):

    def factorize_helper(n, min_poss_factor):
        if n <= 1:
            return []
        prime_factors = []
        smallest_prime_factor = -1
        for i in range(min_poss_factor, math.ceil(math.sqrt(n)) + 1):
            if n % i == 0:
                smallest_prime_factor = i
                break
        if smallest_prime_factor != -1:
            return [smallest_prime_factor] \
                   + factorize_helper(n // smallest_prime_factor,
                                      smallest_prime_factor)
        else:
            return [n]

    if n < 0: …
Run Code Online (Sandbox Code Playgroud)

python performance haskell factoring

4
推荐指数
1
解决办法
298
查看次数

找出2个数字添加到某个东西并乘以某个东西

嘿,所以我正在制作一个保理程序,我想知道是否有人能够以有效的方式给我任何想法,找到两个数字到指定数字的多个,并且还添加到指定的数字.

比如我可能有

(a)(b)= 6

a + b = 5

所以基本上我只需要一种方法来找到a和b值.在这种情况下,他们将是2和3.

任何人都可以给我任何关于从哪里开始的想法?还必须考虑使用负数.

php numbers factoring

1
推荐指数
1
解决办法
21万
查看次数

php递归错误分解

所以我对递归的想法是新的,我写了这个简单的代码来计算一个数字($ n)这是代码:

$n = 120;
$y = 1;

function factor($n, $y) {
    if($y > $n) {
        return 1;
    } else {
        $x = $n / $y;
        list($whole, $dec) = array_pad(explode('.', $x), 2, Null);
        if($dec == '') {
            echo 'x:' . $x . ' y:' . $y . '</br>';
            return factor($n, ($y + 1));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是代码输出的内容:

x:120 y:1
x:60 y:2
x:40 y:3
x:30 y:4
x:24 y:5
x:20 y:6
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为什么它会在它完成之前停止?

php recursion factoring

0
推荐指数
1
解决办法
226
查看次数

最小化一个区间内整数的除数

我最近偶然发现了一个算法问题,我无法理解它.你得到一个正整数N <10 ^ 13,你需要选择一个非负整数M,这样得和:M N + N(N-1)/ 2的除数最小,介于1和N,包括在内.有人能指出我解决这个问题的正确方向吗?感谢您的时间.

algorithm primes discrete-mathematics factoring

0
推荐指数
1
解决办法
74
查看次数