ast*_*hsy 4 c c++ comparison for-loop
我曾经知道i <= N和之间没有区别i < N+1
但是,当我进入6 6程序时.
如果i <= N那么它打印
1 6 6
6 1 1
2 3 3
3 2 2
除此以外
1 6 6
6 1 1
2 3 3
3 2 2
3 2 2
2 3 3
我无法弄清楚它为何会有所作为
#include <iostream>
#include <cmath>
using namespace std;
typedef long long LNT;
LNT gcd(LNT a, LNT b)
{
if( b == 0)
return a;
return gcd(b, a%b);
}
int main()
{
LNT red, green;
LNT GCD;
cin >> red >> green;
GCD = gcd(red, green);
//for(LNT i = 1; i<sqrtl(GCD)+1; i++)
for(LNT i = 1; i<=sqrtl(GCD); i++) // <- This Line cause the difference
{
if( GCD % i == 0)
{
cout << i << " " << red/i << " " << green/i <<endl;
if( i != GCD/i )
{
LNT k = GCD/i;
cout << k << " " << red/k << " " << green/k <<endl;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Zby*_*000 15
这仅适用于整数值.作为sqrtl返回long double,如果它是小数,那么对于小数,如果你将原始与分数进行比较并且+1另一个整数适合于它,它仍将是不同的:
! 2 <= 1.5
2 < 1.5+1
Run Code Online (Sandbox Code Playgroud)