用C语言求解工程Euler#4 [英] Solving Project Euler #4 with C language
本文介绍了用C语言求解工程Euler#4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图用C语言解决Project Euler的问题4,但总是得到错误的答案。
// Project Euler - Problem 5
// 09/01/2014
#include <stdio.h>
int a,b,c,digits[14],e,y,z,biggestNum;
void isPalindrome (int x)
{
a = -1;
c = 0;
b = x;
while (b != 0)
{
digits[c] = (b % 10);
b=b/10;
c++;
}
while (c>=a)
{
if(digits[++a]!=digits[--c])
{
break;
}
if(a==c) { biggestNum=x; }
else if(a==c-1) { biggestNum=x; }
}
}
int main (void)
{
for(y=10; y<1000; y++)
{
for(z=10; z<1000; z++)
{
isPalindrome(y*z);
}
}
printf ("%d",biggestNum);
return 0;
}
有人能告诉我我的代码有什么问题吗?也许是在检查这个数字是不是回文函数? 谢谢 The Problem
推荐答案
您的代码找不到最大的回文,如果您遍历数字,它会找到最后一个回文
10* 10, 10 * 11, 10 * 12, .... 10 * 999
...
999 * 10, 999 * 11, .... 999 * 999
如果最大的回文正好是(比方说)750*750,但999*11也是回文,则999*11将覆盖正确答案。
您每次需要测试您的答案是否大于您以前得到的最大答案。
这篇关于用C语言求解工程Euler#4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文