Project Euler 4

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.
回文数とは、逆から数字を読んでも同じ数になる数のことです。2つの2桁の数の積からできる最大の回文数は9009 = 91×99です。
2つの3桁の数からできる最大の回文数を求めなさい。

Mathematica

For[i = 100, i < 1000, i++,
 For[j = 100, j < 1000, j++,
  tmp = ToString[i*j];
  A = If[tmp == StringReverse[tmp] && A < i*j, i*j, A] 
  ]
 ]
A

結構重い処理になってしまいました。

C/C++

/*
project euler 004
回文数とは、逆から数字を読んでも同じ数になる数のことです。2つの2桁の数の積からできる最大の回文数は9009 = 91×99です。
2つの3桁の数からできる最大の回文数を求めなさい。
*/

#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
using namespace std;

string IntToString(int);
bool is_palindromic(int);

int main(){
	int ans = 0;

	for(int i=0 ; i<1000 ; i++){
		for(int j=i ; j<1000 ; j++){
			if(is_palindromic(i*j) && i*j > ans) ans = i*j;
		}
	}
	cout << ans << endl;
}

/*
numが回文数かどうかを調べる。
*/
bool is_palindromic(int num){
	static string str1, str2;
	str1 = IntToString(num);
	str2 = str1;
	reverse(str2.begin(), str2.end());
	return str1==str2;
}

/* 
int型をString型に変換する
*/
string IntToString(int num){
	stringstream ss;
	ss << num;
	return ss.str();
}

先が思いやられる・・・