且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用循环查找蛮力素数

更新时间:2023-02-26 18:17:30

以下某些伪代码可能有帮助或无济于事

Here's some pseudocode that may or may not help

'''
This function takes a single argument n and returns either
    1) a factor of n     if n is not prime
    2) False             if n is prime
'''
def is_prime(n):
    # "Check if it's even..."
    if is_even(n):
        # (do something)
    else:
        # "... and if not, check all the odd numbers up to the square root of the number"
        for f in <something that generates odd numbers>:
            if is_factor(f,n):
                # (do something)

    # Default case:
    #    n is odd, and 
    #    none of the odd numbers up to sqrt(n) are factors of n
    # (do something)


def get_n():
    n = raw_input("What is the value of n? ")
    return ((2 ** 67)-1) if n == 'm' else int(n)


n = get_n()
p = is_prime(n)

if p:
    print("%d is not prime (e.g. factor=%d)" % (n, p))
else:
    print("%d is prime")

请注意, is_even is_factor 不是真正的函数,您必须自己实现它们或将其更改为等效操作.同样,<生成奇数的东西> 也不是真实的,

Note that is_even and is_factor are not real functions, you'd have to either implement them yourself or change them to equivalent operations. Also, <something that generates odd numbers> isn't real either, same thing.

此外, get_n()是一个小功能,提示用户输入整数并返回它.如果用户输入 m (单个小写字符),则返回Mersenne 67(=(2 ^ 67)-1)

Also, get_n() is a little function that prompts a user for an integer and returns it. If the user enters m (the single, lower case character), then it returns Mersenne 67 (= (2^67) - 1)