Description du problème :
Étant donné un entier positif N, demandez à trois nombres sélectionnés au hasard entre 1 et N, quel est leur multiple le plus commun maximum.
Format de saisie :
Entrez un entier positif N.
Format de sortie :
Sortez un entier représentant le plus petit commun multiple que vous avez trouvé.
Exemple d'entrée :
9
Exemple de sortie :
504
Échelle et convention des données :
1 <= N <= 106
Tutoriel vidéo d'apprentissage en ligne recommandé :Cours Java
Idée :
Tout d'abord, déclarez quelques concepts :
Le plus petit commun multiple de deux nombres naturels adjacents non nuls est leur produit ; le plus petit commun multiple de deux nombres impairs adjacents est leur produit ; le plus petit commun multiple de deux nombres pairs adjacents (sauf 0) est ; leur moitié de produit.
Maintenant au plus petit commun multiple de trois nombres, il y a deux situations selon la parité de N :
1. Lorsque n est un nombre impair : n, n-1, n- 2 Produit
2. Lorsque n est un nombre pair : n-1, n-2, n-3 sont un ensemble de solutions maximales. Si la réponse est supérieure à la valeur actuelle, il ne peut s'agir que de la valeur actuelle. produit supérieur à ces trois nombres. Ensuite, vous ne pouvez changer qu'un seul des nombres en n, et les trois nombres doivent également être relativement premiers. n, n-2, n-3 pair et impair ne sont évidemment pas premiers entre eux ; n, n-1, n-3 sont pairs et impairs ; n, n-1, n-2 pair et impair ne sont évidemment pas premiers entre eux.
Alors la réponse ne peut être que n-1, n-2, n-3 ou n, n-1, n-3. Cependant, bien que n et n-3 soient un nombre impair et un nombre pair, ils ne sont pas continus et peuvent ne pas être relativement premiers, comme les trois nombres 5, 6 et 3.
n est un nombre impair : n, n-1, n-2
n est un nombre pair : n est un multiple de 3 n-1, n-2, n-3
n n'est pas un multiple de 3 n, n-1, n-3
Les exemples sont les suivants :
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); long N=input.nextLong(); long temp=0; if(N<=2){ System.out.println(N); } else if(N%2==0){ temp=(N-1)*(N-2)*(N-3); if(N%3!=0){ temp=Math.max(temp,N*(N-1)*(N-3)); } System.out.println(temp); } else { System.out.println(N*(N-1)*(N-2)); } } }
Conseils : Considérons le cas de N<3, et veillez à utiliser long dans cette question.
Articles et tutoriels recommandés sur Java :Introduction au développement Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!