Tag: 因子

查找600851475143中最大的素数?

我试图从http://projecteuler.net解决问题3。 但是,当我运行的东西程序没有打印出来。 我究竟做错了什么? 问题:数字600851475143的最大素数是多less? public class project_3 { public boolean prime(long x) // if x is prime return true { boolean bool = false; for(long count=1L; count<x; count++) { if( x%count==0 ) { bool = false; break; } else { bool = true; } } return bool; } public static void main(String[] args) { long […]

快速的方法来计算n! mod m其中m是素数?

我很好奇,如果有一个好办法做到这一点。 我目前的代码是这样的: def factorialMod(n, modulus): ans=1 for i in range(1,n+1): ans = ans * i % modulus return ans % modulus 但它似乎很慢! 我也不能计算n! 然后应用素数模,因为有时n很大,n! 明确计算是不可行的。 我也遇到http://en.wikipedia.org/wiki/Stirling%27s_approximation,并想知道这是否可以在这里以某种方式使用? 或者,我怎样才能创build一个recursion,memoized函数在C + +?

计算一个任意大数的阶乘,显示所有的数字

最近我在一次采访中被要求描述一种计算任意大数的阶乘的方法; 我们获得答案的所有数字的方法。 我search了不同的地方,并在几个论坛上询问。 但是我想知道是否有什么办法可以在不使用GMP等库的情况下完成这个任务。 谢谢。

Eratosthenes的分割筛?

做一个简单的筛子很容易: for (int i=2; i<=N; i++){ if (sieve[i]==0){ cout << i << " is prime" << endl; for (int j = i; j<=N; j+=i){ sieve[j]=1; } } cout << i << " has " << sieve[i] << " distinct prime factors\n"; } 但是当N很大,我不能在内存中保存这样的数组呢? 我已经查找了分段的sieve方法,它们似乎涉及到sqrt(N)findprimes,但我不明白它是如何工作的。 如果N很大(比如10 ^ 18)呢?