Perl :: Aufgabe #65

4 Lösungen Lösungen öffentlich

Finde die erste Zahl die durch alle Zahlen bis 30teilbar ist

Fortgeschrittener - Perl 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

Lösungen:

vote_ok
von Kimaro (520 Punkte) - 21.10.2014 um 15:23 Uhr
Quellcode ausblenden Perl-Code

#!/usr/bin/perl
use strict;
use warnings;
 
my $x = 0;
my $a = 30;
my $t = 0;

sub berechnung() {
	my $y = 1;
	my $c = 0;
	my @arr = (29,27,25,23,21,19,17,28,26,24,22,20,18,16);
	while ($y == 1) {
		if ($a %$arr[$c]) {
			$y = 0;
		}
		else {		
			if ($c == 14 ) {
				print "ihr Ergebnis ist $a";
				$y = 0;
				$x = 1;
			}
			$c = $c + 1;
		}	
	}	
	return $x;
}

while ($x == 0) {
	berechnung();
	$a = $a + 30;	
}

<STDIN>

1x
vote_ok
von wertz (490 Punkte) - 29.04.2015 um 12:18 Uhr
Quellcode ausblenden Perl-Code
# Konnte es leider nicht testen, da meine Konsole abstürtzt wenn ich das starte, aber es müsste funktionieren. LG

#! /usr/bin/perl
 
use strict;
use warnings;

my $schalter = 0;

for(my $i = 1; $schalter != 1; $i++){
	$schalter = 1;
	for(my $j = 1; $j <= 30; $j++){
		if($i % $j != 0){
			$schalter = 0;
		}
	}
	if($schalter == 1){
		print "\n Erste Zahl die durch 1 - 30 teilbahr ist, ist: ", $i;
	}
}
vote_ok
von Chilli (450 Punkte) - 24.10.2017 um 06:56 Uhr
Quellcode ausblenden Perl-Code
#!/usr/bin/perl
use strict;
use warnings;

my $max = 30;
my $geteielt = 1;
my $z = 0;
my $zahl = 1;
my $check = 0;

for($geteielt..$max)
 {
	$check = 0;
	while(!$check)
	{
		$check = 1;
		$z = 1;
		for($z..$geteielt)
		{
			if($zahl % $z != 0)
			{
				$check = 0;
			}
			$z++;
		}
		if($check)
		{
			print "$zahl ist durch die zahlen 1 - $geteielt teilbar\n";
		}
		$zahl ++;
	}
	$geteielt++;
}
my $end = <STDIN>;
vote_ok
von ariannozari (140 Punkte) - 23.11.2017 um 14:35 Uhr
Quellcode ausblenden Swift-Code
func zahl(wert: Int) -> String {
	
	var counter = wert  // TODO
	var fertig = false
	var counterX = 2
	
	// (3) 2,3,4
	repeat {
		counterX = 2
		for zahlX in 2...wert { // TODO 
			
			if (counter % zahlX == 0) {
				counterX += 1
			}
			
		}
		
		if (counterX == (wert + 1) ) {
				fertig = true
		} 
		
		counter += 1
		
	} while (!fertig)
//	232_792_560
	counter -= 1
	return String(counter)
}

print(zahl(wert: 18)) // 12252240