Problembeschreibung:
Gegeben eine positive ganze Zahl N, fragen Sie drei zufällig ausgewählte Zahlen aus 1~N, was das größte kleinste gemeinsame Vielfache davon ist.
Eingabeformat:
Geben Sie eine positive ganze Zahl N ein.
Ausgabeformat:
Geben Sie eine Ganzzahl aus, die das kleinste gemeinsame Vielfache darstellt, das Sie gefunden haben.
Beispieleingabe:
9
Beispielausgabe:
504
Datenskala und -konvention:
1 <= N <= 106
Empfohlenes Online-Lernvideo-Tutorial: Java-Kurs
Idee:
Deklarieren Sie zunächst ein paar Konzepte :
Das kleinste gemeinsame Vielfache zweier benachbarter natürlicher Zahlen ungleich Null ist ihr Produkt; das kleinste gemeinsame Vielfache zweier benachbarter ungerader Zahlen ist ihr Produkt; ihre Produkthälfte.
Nun zum kleinsten gemeinsamen Vielfachen von drei Zahlen gibt es zwei Situationen entsprechend der Parität von N:
1. Wenn n eine ungerade Zahl ist: n, n-1, n- 2 Produkt
2. Wenn n eine gerade Zahl ist: n-1, n-2, n-3 sind eine Menge maximaler Lösungen. Wenn die Antwort größer als der aktuelle Wert ist, kann es nur sein Produkt größer als diese drei Zahlen Dann können Sie nur eine der Zahlen in n ändern, und die drei Zahlen müssen auch relativ prim sein. n, n-2, n-3 gerade und ungerade sind offensichtlich nicht zueinander prim; n, n-1, n-3 sind gerade und ungerade; n, n-1, n-2 sind gerade und ungerade offensichtlich nicht zueinander prim.
Dann kann die Antwort nur n-1, n-2, n-3 oder n, n-1, n-3 lauten. Obwohl n und n-3 eine ungerade und eine gerade Zahl sind, sind sie jedoch nicht stetig und möglicherweise nicht teilerfremd, wie beispielsweise die drei Zahlen 5, 6 und 3.
n ist eine ungerade Zahl: n, n-1, n-2
n ist eine gerade Zahl: n ist ein Vielfaches von 3 n-1, n-2, n-3
n ist kein Vielfaches von 3 n, n-1, n-3
Beispiele sind wie folgt:
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)); } } }
Tipps: Betrachten Sie den Fall von N<3, und achten Sie darauf, in dieser Frage long zu verwenden.
Empfohlene Artikel und Tutorials zum Thema Java: Einführung in die Java-Entwicklung
Das obige ist der detaillierte Inhalt vonSo berechnen Sie das kleinste gemeinsame Vielfache in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!