二进制计算机如何找到非常大的数字N(N> 10 ^ 10)是否可被小素数p整除(2

时间:2014-10-14 01:07:45

标签: binary primes integer-division prime-factoring factorization

如果计算机使用base 6(senary),他们可以很容易地发现N是否可被2或3整除,并且由于数字和规则(omega和alpha triatives),他们也可以很容易地判断出N是否可被整除5或7。

但是计算机使用base 2(二进制)。因此,他们可以很容易地判断N是否可以被2除,并且由于数字和规则(alpha totative),他们还可以判断N是否可以被3整除。

要确定N是否可以被5整除,它们可以将N转换为16(十六进制),并使用数字和规则(omega totative)来查找N是否可以被5整除。

我不知道......还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

它将解决它解决任何其他64位整数的方式。

log2 10 ^ 10~ = 33.219

这意味着这个数字和许多其他数字可由64位int表示。

你可以试试

std::vector<int64_t> primes = {2,3,5,7,11,13,17,19,23,29}; 
int64_t  mynumber = 0x2540BE400;

for (int64_t prime : primes)
{
    if (mynumber % prime == 0)
    {
        std::cout << mynumber << " is divisible by " << prime << std::endl;
    }
}

有关%/实施的详细信息,以下文章是一个很好的参考:http://www.diva-portal.org/smash/get/diva2:347845/FULLTEXT01.pdf