use*_*463 1 java primitive types
问题:我无法存储号码'600851475143'.我意识到这个数字比int可以容纳的数字大,并且小于最大长值.但是,我的程序没有将变量"number"注册为long,而是将其注册为int.有人能解释一下这个问题吗?
** - 问题的界限
public class Problem3{
//What is the largest prime factor of the number 600851475143
public static void main(String[] args){
***long number = 600851475143 , total = 0;
for(long x = (number-1)/2; x>1; x--)
if(number%x == 0 && isPrime(x)) total += x;
System.out.println(total);
}
private static boolean isPrime(long determine){
for(long x = determine/2 - 1; x>1; x--)
if(determine%x ==0) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
}
解决方案:正如Jim在下面所说,为了类型为long,必须在数字的末尾加上"L"或"l"."如果整数字面以字母L或l结尾,则为long类型;否则为int类型.建议您使用大写字母L,因为小写字母l很难与数字1区分开来". - 从Oracle网站上的原始类型.
更多信息: Java的L号(长)规范
| 归档时间: |
|
| 查看次数: |
648 次 |
| 最近记录: |