两个程序都求两个数字的公因数。
输入:a = 100000 b = 100000
python 36(正确)
cpp 35(错误)
首先我找到两个数的gcd,然后找到gcd的因数以获得公因数。 我从here找到了python程序 并且我试图将其转换为cpp,但是我得到了错误的答案。
python:
$cb = intersection( 0, 163, 123, 256, 0, 133, 93, 256 );
cpp:
def ngcd(x, y):
i=1
while(i<=x and i<=y):
if(x%i==0 and y%i == 0):
gcd=i;
i+=1
return gcd;
def num_comm_div(x, y):
n = ngcd(x, y)
result = 0
z = int(n**0.5)
i = 1
while( i <= z ):
if(n % i == 0):
result += 2
if(i == n/i):
print("I am executed at ",i) # never executed
result-=1
i+=1
return result
print("Number of common divisors: ",num_comm_div(2, 4))
print("Number of common divisors: ",num_comm_div(2, 8))
print("Number of common divisors: ",num_comm_div(100000, 100000))
答案 0 :(得分:1)
在Python中注意以下if
:
if(n % i == 0):
result += 2
if(i == n/i):
print("I am executed at ",i) # never executed
result-=1
第二个if
包含在第一个文本的主体中。您在C ++中对应的块应为:
if(n%i==0){
ans+=2;
if(i==n/i)
{
printf("I am executed at %d \n",i);//executed at i=316
ans--;
}
}