-3

我的作业是找到最多 10,000 的“emirp 数”(质数对,如 13 ⇆ 31)。我可以使用 反转数字[::-1],但我必须%改为使用它。

这是我的代码。它有效,但我怎样才能使用%而不是反转数字[::-1]

counter=0;
prime_counter=0;
emirp_counter=0;
for N in range(13,9968):
    i=2;
    controlq=1;
    while i < N/2+1 and controlq==1:
        counter+=1;
        if N % i == 0:
            controlq=0;
        i+=1;
    if controlq==1:
        x=int(str(N)[::-1]); # Here's the problem.
        a=2;
        controlw=1
        while a < x/2+1 and controlw==1:
            emirp_counter+=1
            if x % a == 0: 
                controlw=0;
            a+=1
        if controlw==1 and (N!=x):
            prime_counter+=1;
            print(N,'<-- is an emirp number -->',x,);
print('TOTAL PRIME NUMBERS', prime_counter);
print('TOTAL PROCESS', emirp_counter+counter);

1 个月前我刚开始学习 Python(和编程)。

4

2 回答 2

1

使用mod反转数字?从我的头顶我明白了

def reverse_number(n):
    digit=[]
    while n!=0:
        n,d = divmod(n,10) # n//10 , n%10
        digit.insert(0,d)
    result=0
    for i,d in enumerate(digit):
        result += d*10**i
    return result

因为 n mod 10 给了我数字的最后一位,然后我只需要保存它,然后将数字除以 10,然后重复直到我的数字为零,Python 让我同时使用divmod,最后根据需要将新的倒数加上 10 的幂。

>>> reverse_number(45682)
28654
于 2015-12-16T03:03:26.663 回答
0

简短的回答:

def reverse(x):
    def reverse_int_(n, r):
        return reverse_int_(n / 10, n % 10 + r * 10) if n else r
    return reverse_int_(x, 0)

那里有你的 % 运算符。

于 2015-12-16T03:10:05.540 回答