考虑x^i+y^i=z^i,x<=y<=z<=m和2<=i<=n(m和n是输入)m可以从5到100变化n可以从2到100变化

2024-07-07 08:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑x^i+y^i=z^i,x<;=y<;=z<;=m和2<;=i<;=n(m和n是输入)m可以从5到100变化n可以从2到100变化

这是它的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  

但它也不起作用。有人能告诉我为什么吗?你知道吗


Tags: inltforifrangemathlongint
2条回答

有一个流行的数学定理Fermat's Great (Last) Theorem,它指出任何整数n > 2都不存在非零整数abc,这样a^n + b^n = c^n。你知道吗

你刚才有个语法错误。以下是对我有效的方法:

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=x**j
            ye=y**j
            ze=z**j
            se=(xe+ye)
            if (ze == se): 
                sum=sum+1
print ("sum = "+str(sum))

我正在测试输入m = 100n = 10,结果是850。你知道吗

不过,如果你想验证费马的最后一个定理:

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 (3, n):

  for x in range (1, m):

    for y in range (x, m):

        for z in range (y, m):
            xe=x**j
            ye=y**j
            ze=z**j
            se=(xe+ye)
            if (ze == se): 
                sum=sum+1
print ("sum = "+str(sum))

用这个^。你知道吗

相关问题 更多 >