我<N + 1且i <= N不同吗?

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)