Interprime:Xiao Mingは数学を学ぶのが好きで、奇妙な問題を起こすのが好きです。今日、彼は「M "N、gcd(N、M)== 1、Mは偶数」を満たすMの数を知りたいと思っています。Xiaomingがこの問題を解決するのに役立つプログラムを書いてください。

タイトル説明

Xiao Mingは数学を学ぶのが好きで、奇妙な問題を起こすのが好きです。この日、彼は与えられたNに対して「M <N、gcd(N、M)== 1、Mは偶数」を満たすMの数を知りたいと思っています。 。Xiaomingがこの問題を解決するのに役立つプログラムを書いてください。

入力データ

入力データの最初の行は正の整数Tで、これはテストデータのグループの数を表します。テストデータの次のTグループでは、テストデータの各グループは1行で、整数N(1≤T≤100、1≤N≤10000)を含みます。

出力データ

入力データの各セットについて、「ケース#id:M」を別の行に出力します。これは、idグループデータの結果がMであり、idが1から始まることを示します。

サンプル入力

4
1
2
11
23

サンプル出力

ケース#1:0
ケース#2:0
ケース#3:5
ケース#4:11

ヒント:

gcd(a、b)== 1は、aとbの最大公約数が1であること、つまりaとbが互いに素であることを意味します。

経験:除算を通じて最大公約数を見つける

def gcd(a, b):  #辗转相除法求最大公约数
    if b == 0:        
    	return a    
    else:        
    	return gcd(b, a%b)

T = int(input())  
for n in range(T) : 
    dArray = []      
    inputStr = input()      
    if inputStr != "":          
    	N = int(inputStr)          
    	M = 0          
    	for count in range(int((N+1)/2)-1):
    	    if gcd(N, (count+1)*2) == 1:
    	        M += 1          
    	print("Case #%d: %d" % (n + 1 , M))      
    else:
    	break  

おすすめ

転載: blog.csdn.net/tianxiefenxiang/article/details/107320421