求最大的由两个3位数相乘得到的回文数。
#include <stdio.h>
int main(){
int num,temp=0,num_1,num_2=10000;
for(int i=999;i>=100;i--){
for (int j=999; j >=100 ; --j) {
num = j * i;
num_1 = num;
temp=0;
while (num_1 > 0) {
temp= num_1 % 10 +temp*10;
num_1/=10;
}
if(temp==num && num>num_2)
{
num_2=num;
}
}
}
printf("最大回文数为:%d",num_2);
return 0;
}
首先循环两个三位数
然后判断回文数
从回文数判断出一个最大的
重点在判断回文数
代码在本地ide跑198毫秒 还可以通过将num=j*i之后插入一个num与已知回文数num_2判断提前除掉小的数省去判断回文步骤;然后还有关于回文数的数学特性,这个我想不到;第三个是i*j可能会取重复值的问题,比如2*3与3*2,解决该问题可以更改循环体为
for(int i=999;i>=100;i--)
for(int j=i;j>=100;j--){
//省略
}