我正在尝试实现一个函数primeFac()
,该函数将正整数作为输入,n
并返回包含素数因子分解中所有数字的列表n
.
我已经做到这一点,但我认为在这里使用递归会更好,不知道如何在这里创建递归代码,什么是基本情况?首先.
我的代码:
def primes(n):
primfac = []
d = 2
while (n > 1):
if n%d==0:
primfac.append(d)
# how do I continue from here... ?
Run Code Online (Sandbox Code Playgroud) 我希望实现一个具有指定周期的简单伪随机数发生器(PRNG),并确保在该周期的持续时间内没有冲突.经过一番研究后,我发现了非常着名的LCG,这是完美的.问题是,我无法理解如何正确配置它.这是我目前的实施:
function LCG (state)
{
var a = ?;
var c = ?;
var m = ?;
return (a * state + c) % m;
}
Run Code Online (Sandbox Code Playgroud)
它表示,为了使所有种子值都有一个完整的时间段,必须满足以下条件:
1和3很容易理解和测试.然而,2,我不太明白这意味着什么或如何检查它.那么C,它可以为零吗?如果它不是零怎么办?
总的来说,我需要选择A,C和M,使得我的周期为48 ^ 5 - 1.M等于期间,我不确定A和C.
我正在尝试通过Project Euler工作,我在问题03上遇到障碍.我有一个适用于较小数字的算法,但问题3使用非常非常大的数字.
问题03: 13195的主要因素是5,7,13和29. 600851475143中最大的素数因子是什么?
这是我在C#中的解决方案,它一直在运行,我认为接近一个小时.我不是在寻找答案,因为我确实想自己解决这个问题.主要是寻求一些帮助.
static void Main(string[] args) {
const long n = 600851475143;
//const long n = 13195;
long count, half, largestPrime = 0;
bool IsAPrime;
half = n / 2;
for (long i = half; i > 1 && largestPrime == 0; i--) {
if (n % i == 0) { // these are factors of n
count = 1;
IsAPrime = true;
while (++count < i && IsAPrime) {
if (i % count == 0) …
Run Code Online (Sandbox Code Playgroud) 我想在C#2005中创建一个程序来计算给定输入的素因子.我想使用基本和最简单的东西,不需要为它创建方法也不需要为数组等事物创建简单的模数.有没有任何代码满足我的愿望?
这是用于查找简单因子的代码,我需要修改此代码以计算素因子
class Program
{
static void Main(string[] args)
{
int a, b;
Console.WriteLine("Please enter your integer: ");
a = int.Parse(Console.ReadLine());
for (b = 1; b <= a; b++)
{
if (a % b == 0)
{
Console.WriteLine(b + " is a factor of " + a);
}
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud) 我在我找到的网站上做了这个问题(项目Euler),并且有一个问题涉及找到一个数字的最大素数因子.我的解决方案失败了很多,所以我想知道如何简化这段代码?
""" Find the largest prime of a number """
def get_factors(number):
factors = []
for integer in range(1, number + 1):
if number%integer == 0:
factors.append(integer)
return factors
def test_prime(number):
prime = True
for i in range(1, number + 1):
if i!=1 and i!=2 and i!=number:
if number%i == 0:
prime = False
return prime
def test_for_primes(lst):
primes = []
for i in lst:
if test_prime(i):
primes.append(i)
return primes
################################################### program starts here
def find_largest_prime_factor(i):
factors = get_factors(i)
prime_factors …
Run Code Online (Sandbox Code Playgroud) 所以这里有两个函数来查找数字的素因子.致谢:Triptych /sf/answers/28905971/
def prime_factors1(n):
"""Returns all the prime factors of a positive integer"""
factors = []
d = 2
while n > 1:
while n % d == 0:
factors.append(d)
n /= d
d = d + 1
return factors
def prime_factors2(n):
"""Returns all the prime factors of a positive integer"""
factors = []
d = 2
while n > 1:
while n % d == 0:
factors.append(d)
n /= d
d = d + 1
if d*d > n: …
Run Code Online (Sandbox Code Playgroud) primes ×3
python ×3
algorithm ×2
c# ×2
javascript ×1
long-integer ×1
math ×1
prng ×1
python-2.7 ×1
python-3.x ×1