Java :: Aufgabe #65
5 Lösungen
Finde die erste Zahl die durch alle Zahlen bis 30teilbar ist
Fortgeschrittener - Java
von 96fabi
- 25.09.2014 um 09:01 Uhr
Gesucht wird die erste Zahl, die durch alle Zahlen bis 30 geteilt werden kann(1-30).
Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann.
Dieses ist 232792560
Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann.
Dieses ist 232792560
Lösungen:
Da ich erst seit kurzem programmiere, ist diese Lösung wohl sicher nicht besonders sauber und zudem auch recht langsam, aber soweit ich das beurteilen konnte anhand von Tests, scheint sie ihren Zweck soweit zu erfüllen.
Java-Code
public class TeilerDreissig {
public static void main(String[] args) {
long dreissigzahl = 1;
long zaehler = 1;
while(dreissigzahl == 1) {
zaehler++;
if(zaehler%1==0 &&zaehler%2==0 &&zaehler%3==0 &&zaehler%4==0 &&zaehler%5==0 &&zaehler%6==0 &&zaehler%7==0 &&zaehler%8==0 &&zaehler%9==0 &&zaehler%10==0 &&zaehler%11==0 &&zaehler%12==0 &&zaehler%13==0 &&zaehler%14==0 &&zaehler%15==0 &&zaehler%16==0 &&zaehler%17==0 &&zaehler%18==0 && zaehler%19==0 && zaehler%20==0&& zaehler%21==0 && zaehler%22==0 && zaehler%23==0 && zaehler%24==0 && zaehler%25==0 && zaehler%26==0 && zaehler%27==0 && zaehler%28==0 && zaehler%29==0 && zaehler%30==0) {
dreissigzahl = zaehler;
}
else {
dreissigzahl = 1;
}
}
System.out.println("Die erste Zahl, die durch alle Zahlen bis 30 teilbar ist, ist "+zaehler);
}
}
public class Main {
static long gcd(long a, long b) // ggT zweier Zahlen
{
return b == 0 ? a : gcd(b, a % b);
}
static long lcm(long a, long b) {
return a / gcd(a, b) * b;
}
public static void main(String[] args) {
long result = 1;
for (int i = 2; i <= 30; i++) {
result = lcm(result, i);
}
System.out.println(result);
}
}
/**
* @author ElPapito
* @date 28.04.2015
*/
public class FindeZahl {
public static void main(String[] args) {
int max = 30;
int[] exp = new int[max + 1]; // 0 und 1 werden nicht genutzt
for (int i = 2; i <= max; i++) {
int tmp = i;
for (int j = 2; j <= max; j++) { // Zerlege tmp in Primfaktoren
int e = 0;
while (tmp % j == 0) { // Berechne exponent für e Primfaktor j
e = e + 1;
tmp = tmp / j;
}
if (e > exp[j]) { // Teste ob e maximaler Exponent für Primfaktor j
exp[j] = e;
}
}
}
long lcm = 1;
for (int i = 2; i <= max; i++) {
lcm = lcm * (long) Math.pow(i, exp[i]);
}
System.out.println("Lösung: " + lcm); // Lösung: 2329089562800
}
}
public class Teilbar {
public static void main(String[] args) {
long zahl = 60;
int merk = 0;
while (true) {
for (int i = 1; i <= 30; i++) {
if (zahl % i != 0) {
merk = 0;
break;
} else {
++merk;
}
if (merk == 30) {
System.out.println("Gefunden ! Zahl lautet: " + zahl);
System.exit(0);
}
}
++zahl;
}
}
}
class Main{
public static void main (String[]args){
long start = 1L;
int all;
while(true){
all = 0;
for (int i = 1; i <= 30; i++){
all += start%i;
}
if(all == 0){
System.out.println("Die Zahl " + start + " ist durch die Zahlen von 1 - 30 Teilbar!");
break;
}
start++;
}
}
}Kurz und einfach
Lösung = 2329089562800
