【发布时间】:2016-01-10 06:42:13
【问题描述】:
考虑 x^i+y^i=z^i, x
这是它的 c 程序
int main()
{
int m, n;
long long int x, y, z, j;
long long int xe, ye, ze, se;
long long int sum = 0;
scanf("%d", &m);
scanf("%d", &n);
for (j = 2; j <= n; j++)
{
for (x = 0; x <= m; x++)
{
for (y = x; y <= m; y++)
{
for (z = y; z <= m; z++)
{
xe = pow(x, j);
ye = pow(y, j);
ze = pow(z, j);
se = (xe + ye);
if (ze == se)
{
printf("\n i = %lld", j);
sum++;
}
}
}
}
}
printf("sum= %lld ", sum);
return 0;
}
因为它不适用于大值(我不想使用大整数:P) 我写了一个等价的python---
import math
m=0
n=0
x=y=z=j=0
xe=ye=ze=se=0
sum=0;
m = int(input("Enter a number: "))
n = int(input("Enter a number: "))
for j in range (2, n):
for x in range (0, m):
for y in range (x, m):
for z in range (y, m):
xe=math.pow(x,j)
ye=math.pow(y,j)
ze=math.pow(z,j)
se=(xe+ye)
if (ze == se):
sum=sum+1
print "sum=", sum
但它也不起作用。谁能告诉我为什么?
【问题讨论】:
-
如果您想在 python 中执行此操作,我建议您删除 C 代码和 C 标记...您已经针对 C 提出了确切的问题。我 猜测 以获得确切的结果,您还需要在 python 中提供 一些 额外的 big-int 支持,所以在不同的语言中这将是 完全相同的问题(但这只是一个猜测,我不要正常使用python)
-
math.pow是一个浮点函数。如果您需要精确的值,请不要使用它(因为使用了==)。只需使用整数幂x**y。 -
@JohnWick:请您编辑问题以说明您的代码以何种方式不起作用?如果它给出错误,请显示回溯。如果它给出的结果你认为不正确,请显示输入、你得到的结果,并说出你期望的结果。
标签: python c optimization