对于"long"类型,整数常量太大

Bac*_*acu 18 c++ dev-c++

可能重复:
C/C++中的long long

为项目Euler问题编写一个简单的程序.拒绝编译,因为"整数常量对于"long"类型"来说太大,即使它应该在unsigned long long的大小限制内.使用dev-c ++编译器.

有问题的代码:

#include <iostream>

bool isprime (unsigned long long i)
{
    if(i==1||i==0) return false;
    if(i==2) return true;
    for(unsigned long long k=2;k!=i-1;k++)
    {      
        if(i%k==0) return false;
    }
    return true;
}

int main()
{
    for(unsigned long long i=600851475143;i>=0;i--) //problematic line
    {
        if(isprime(i))
        {
            std::cout<<i;
            std::cin.get();
            return 0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*son 29

尝试"ULL"后缀: 600851475143ULL