2020年4月19日 星期日

[C_MM234-易] 找尋雙胞胎質數

[C_MM234-易] 找尋雙胞胎質數

成績: 0 / 倒扣: 0.8
找尋雙胞胎質數
Problem Description所謂的雙胞胎質數,指的是相差為 2 的質數。例如 (17,19) 就是一對雙胞胎質數。請你寫一隻程式,找出某個區間 [a,b] 中的雙胞胎質數對。例如 [a,b] = [20, 100] ,則雙胞胎質數對有:
(29,31)
(41,43)
(59,61)
(71,73)
Input File Format輸入只有一行,這一行中包含了 2 個整數 a 及 b ,這兩個整數以逗號隔開。整數 a 為區間的下限。整數 b 為區間的上限,兩個整數間沒有空白且 1<=a,b<=1000000 。
Output Format輸出 [a,b] 區間中所有的雙胞胎質數對。每一行一個質數對,質數對用小括號括起來(見底下的範例),兩個質數間用逗點分隔,且中間不需要包含空白。
Example
Sample Input:Sample Output:
20,100


(29,31)
(41,43)
(59,61)
(71,73)

while True:  
    try:  
        def is_prime(n):  
            i, max =2, n**0.5  
            while True:  
                if n==1:return False; break  
                if n==2:return True; break  
  
                if n % i ==0:return False; break  
                if i > max:return True; break  
                i += 1  
  
        m, n = map(int,input().split(','))  
        primes = []  
        for i in range(m, n):  
            if is_prime(i):  
                primes.append(i)  
        for i in range(len(primes) - 1):  
            if abs(primes[i] - primes[i+1]) == 2:  
                print('(%d,%d)' % (primes[i],primes[i+1]))  
    except(EOFError):  
        break

沒有留言:

張貼留言