私はすべてが正常に機能しています。コード-
#include <stdio.h>
#include <math.h>
int quadtest(unsigned long long int a, unsigned long long int b, unsigned long long int c, unsigned int n)
{
if ((pow(a,n)+pow(b,n))==pow(c,n))
return 1;
else
return 0;
}
main()
{
unsigned long long int a;
unsigned long long int b;
unsigned long long int c;
unsigned int n;
n=3;
for(n; n<50; n++)
{
//printf("\nn=%u",n);
for(c=2; c<500; c++)
{
printf("\ntrying now c=%llu and n=%u",c,n);
for(b=2; b<500; b++)
{
for(a=2; a<500; a++)
{
quadtest(a,b,c,n);
if (quadtest(a,b,c,n)==1)
{
printf("\n|||||||||||||||||||||||WORKS|||||||||||||||||||||||||||||||||");
break;
}
//printf("\na=%llu, n=%u b=%llu c=%llu",a,n,b,c);
}
if (quadtest(a,b,c,n)==1)
break;}
if (quadtest(a,b,c,n)==1)
break;
}
if (quadtest(a,b,c,n)==1)
break;
}
if (quadtest(a,b,c,n)==1)
printf("\nthe correct values are a=%llu,b=%llu,c=%llu,n=%u",a,b,c,n);
else
printf("\nfermats theory is correct");
}
私の立場からすると、すべてを正しくコーディングしました(50と500の範囲のみを使用したため、文字通り1日もかからずに実際にコンピューターで実行できました)。
そこで、Cygwin(使用する必要があります)でプログラムをコンパイルしました。約15分かかり、「正しい値はa = 381、b = 2、c = 381、n=7」で停止しました。これは明らかに正しくない。問題が何であるか、またはこれを修正する方法がわかりません。それはメモリと関係があると思いますが、それでも修正が何であるかはわかりません。