Trouver le plus grand palindrome fait le produit de deux nombres de 3 chiffres

package testing.project;

public class PalindromeThreeDigits {

    public static void main(String[] args) {
        int value = 0;
        for(int i = 100;i <=999;i++)
        {
            for(int j = i;j <=999;j++)
            {
                int value1 = i * j;
                StringBuilder sb1 = new StringBuilder(""+value1);
                String sb2 = ""+value1;
                sb1.reverse();
                if(sb2.equals(sb1.toString()) && value<value1) {
                    value = value1;

                }

            }
        }

        System.out.println(value);
    }
}

C'est le code que j'ai écrit en Java... Est-il un moyen efficace d'autres que cela.. Et peut-on optimiser ce code de plus??

Bien sûr, vous pouvez l'optimiser plus, vous pouvez faire un peu de mathématiques de votre propre sur le papier pour réduire l'espace de recherche. Cela devient alors une question de ce que la personne qui a mis la cession est prêt à accepter en tant OK, car il n'y a qu'une seule bonne réponse à la question, et la façon optimale de l'impression que le nombre est juste pour le mettre dans la source comme une chaîne de caractères. Un concept connexe est la différence entre la façon de déterminer si un nombre est premier, et la production d'un certificat que c'est le premier.
Jessop, Pouvez-vous donner quelques exemple avec le code de ce problème..
Par exemple, un programme qui ne System.out.println("906609"); est fonctionnellement équivalente à la vôtre (la preuve ne rentre pas dans cette marge), et pas de doute c'est plus rapide. C'est un exemple extrême de la coupe de l'espace de recherche, bien sûr. Un très faible gain de performance serait dû en commençant à 101 au lieu de 100 que la boucle inférieure lié, puisque tout ce divisibles par 100, se termine dans 00 et n'est donc pas un palindrome. Vous devez décider pour vous-même, où dans le spectre que vous avez fait "trop" preuve mathématique et pas assez intensives.
J'ai comme l'impression. Il montre la véritable optimisation. Mais je ne veux pas l'accepter comme un professeur 🙂
droit, mais en tant que professeur, vous avez à décider d'accepter autre chose qu'une recherche sur tous les produits de nombres de 3 chiffres, ou tous les palindromes dans la gamme, ceux de la "évidente" des moyens de force brute. Si vous n'permettre une optimisation basée sur les maths et les résultats, vous devez décider comment bien une preuve écrite que vous exigez que le programme est correct. Tous les problèmes de programmation de la forme, "écrire un programme qui affiche le numéro unique décrit par la suite..." part de ce problème à un niveau plus ou moins évident mesure.

OriginalL'auteur arsenal | 2011-08-25