i < N+1 和 i <= N 不同吗?

Are i < N+1 and i <= N different?

我以前就知道 i <= Ni < 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;
            }
        }
    }
}

sqrtl return long double 在这种情况下你的假设是:

no difference between i <= N and i < N+1

错了。

这仅适用于整数值。作为 sqrtl returns long double,如果它是小数,那么对于小数,如果你将原始与小数进行比较,并且 +1 另一个整数适合,它仍然会有所不同:

! 2 <= 1.5
2 < 1.5+1

好吧,i<=ni < n+1 之间没有区别,因为它们都只运行到 n 但你做的是 sqrt 而 returns long double 并且它们不一定相同。