i'm using c++, even if i declare long int, there is error like......
long int num = 600851475143; warning: integer constant is too large for ‘long’ type
which datatype should be used in this case?
A lot of it depends on the platform and compiler you are using.
If you are on a x64 platform, a long datatype in C++ should work. A signed long ranges from −9,223,372,036,854,775,808 to +9,223,372,036,854,775,807. An unsigned long on the other hand ranges from 0 to +18,446,744,073,709,551,615.
Also depending on the compiler and platform there are a few other datatypes which effectively is the same thing (doubleword, longword, long long, quad, quadword, int64).
C (not C++) supports the long long data type. Say if you are on Fedora 10 x32 then gcc 4.3.0 supports the long long datatype but you must put the LL after the large literal. See http://www.daniweb.com/forums/thread162930-2.html