Perl :: Aufgabe #65
4 Lösungen
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
Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann.
Dieses ist 232792560
Lösungen:
#!/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>
# 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;
}
}#!/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>;
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
