【发布时间】:2019-04-13 22:20:52
【问题描述】:
我正在尝试编写一个程序,要求将 5^30 的幂存储到 int 中,但是当我尝试这样做时,它会给出一个负数的输出。 双倍或长时它运行良好
#include <stdio.h>
int PowerFive(){
int a, i, n=5, e=1;
for (i = 0; i<=30; i++)
{
a=e;
printf("%d, ", e);
e = e*n;
}
return 0;
}
int main()
{
PowerFive();
}
【问题讨论】:
-
为什么要适合长篇?
30 * math.log(5) / math.log(2) = 69.66 > 63. -
没有包含 5³⁰ 的标准整数大小 —
bc说:5^30 = 931322574615478515625和2^63 = 9223372036854775808并且 5^30 中的十进制数字比 2^ 中的多 2 个63.因此,您需要 64 位以上的整数来存储 5^30。您可以用 2 个 64 位数字模拟一个 128 位数字。 -
您确定要求是“
int值”而不是“整数值”吗?