Schrift
[thread]12122[/thread]

Mit Perl rechnen (Seite 5)

Leser: 4


<< |< 1 2 3 4 5 6 7 8 >| >> 77 Einträge, 8 Seiten
Linuxer
 2008-07-04 16:43
#111817 #111817
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Verkehrte Logik...

Für jede Zahl setzt Du $is_prime = 1; und wenn die Zahl ohne Rest teilbar ist, dann setzt Du $is_prime = 0;

Was soll passieren, wenn $is_prime weiterhin 1 bleibt?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
jd
 2008-07-04 16:44
#111818 #111818
User since
2008-06-27
6 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
use strict;
use warnings;

my ($Zahl, $is_prime, $p);
my @prime = ("2");
print "Bis zu welcher Zahl sollen die Primzahlen gesucht werden?";
chomp(my $Ziel = <STDIN>);

foreach $Zahl (3..$Ziel) {
        #Wofür ist $is_prime?
        $is_prime = 1;
        #Wofür ist $p was macht sie und brauche ich das for noch?
        ##in dieser Schleife wird die Zahl aus der ersten Schleife durch die Zahlen in @prime geteilt.
        ##Wenn die Modulo-Division 0 ergibt wird die Schleife beendet.
        foreach $p (@prime) {
                if ($Zahl % $p == 0){
                        $is_prime = 0;
                        #Was macht das last?
                        ##die Schleife nach diesem Durchgang beenden
                        print $Zahl, "\n";
                        push @prime, $Zahl;
                        last;
                }
                
        }

 }
print "Primzahlen:\n";
print map { $_."\n" }, @prime;

Versuch es mal damit.
Napstack
 2008-07-04 17:04
#111822 #111822
User since
2008-07-03
32 Artikel
BenutzerIn
[default_avatar]
@Linuxer
eine Zahl ist dann eine Primzahl, wenn immer ein rest bleibt wenn man sie durch alle vorherigen Priemzahlen teilt. Das heißt wenn $is_prime weiterhin 1 ist ist die Zahl eine Priemzahl. oder nicht?
Napstack
 2008-07-04 17:08
#111823 #111823
User since
2008-07-03
32 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
perl Primzahlen.pl
Unmatched right curly bracket at Primzahlen.pl line 29, at end of line
syntax error at Primzahlen.pl line 29, near "}"
Execution of Primzahlen.pl aborted due to compilation errors.

dann bekomm ich die fehlermeldung
pq
 2008-07-04 17:15
#111825 #111825
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
das kann doch nich so schwer sein, du hattest es doch schon fast... einzig und allein
eine if-bedingung hätte beim push noch gefehlt.
das skript von jd sieht sehr falsch aus:
Code (perl): (dl )
1
2
3
4
5
6
                if ($Zahl % $p == 0){
                        $is_prime = 0;
                        print $Zahl, "\n";
                        push @prime, $Zahl;
                        last;
                }

wenn es keine primzahl ist, wird das print und das push gemacht.
leute, bitte erstmal testen, bevor ihr skripte postet.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Napstack
 2008-07-04 17:36
#111830 #111830
User since
2008-07-03
32 Artikel
BenutzerIn
[default_avatar]
bitte selber erstmal testen ich bekomme folgende meldung
Code: (dl )
1
2
3
 perl Primzahlen.pl
Global symbol "@Zahl" requires explicit package name at Primzahlen.pl line 20.
Execution of Primzahlen.pl aborted due to compilation errors.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
use strict;
use warnings;

my ($Zahl, $is_prime, $p);
my @prime = ("2");
print "Bis zu welcher Zahl sollen die Primzahlen gesucht werden?";
chomp(my $Ziel = <STDIN>);

foreach $Zahl (3..$Ziel) {
        #Wofür ist $is_prime?
        $is_prime = 1;
        #Wofür ist $p was macht sie und brauche ich das for noch?
        ##in dieser Schleife wird die Zahl aus der ersten Schleife durch die Zahlen in @prime geteilt.
        ##Wenn die Modulo-Division 0 ergibt wird die Schleife beendet.
        foreach $p (@prime) {
               if ($Zahl % $p == 0){
                        $is_prime = 0;
                        print $Zahl, "\n";
                        push @prime, @Zahl;
                        #Was macht das last?
                        ##die Schleife nach diesem Durchgang beenden
                        last;
                }

               }
                
        }
Linuxer
 2008-07-04 17:38
#111831 #111831
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Du solltest $Zahl nutzen, nicht @Zahl... (Zeile 20)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Linuxer
 2008-07-04 17:40
#111832 #111832
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Aber warum willst Du in Zeile 20 schon $Zahl zur Liste der Primzahlen hinzufügen? Du bist da in einem Zweig, dass die Zahl durch eine (kleinere) Primzahl teilbar ist. Damit kann sie nicht prim sein.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Linuxer
 2008-07-04 17:40
#111833 #111833
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Napstack+2008-07-04 15:04:59--
@Linuxer
eine Zahl ist dann eine Primzahl, wenn immer ein rest bleibt wenn man sie durch alle vorherigen Priemzahlen teilt. Das heißt wenn $is_prime weiterhin 1 ist ist die Zahl eine Priemzahl. oder nicht?


Klingt für mich recht gut ;o)
Jetzt musst Du es nur noch in die richtige Programmierlogik umsetzen.

Deine innere Schleife prüft auf Teilbarkeit durch die bisherigen Primzahlen; nach der (inneren) Schleife musst Du dann kontrollieren, ob eine Primzahl vorliegt.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Napstack
 2008-07-04 17:42
#111834 #111834
User since
2008-07-03
32 Artikel
BenutzerIn
[default_avatar]
hab ich mir auch überlegt aber wen er e sagt ich schau mal....
sorry hab ich wirklich übersehe mit der Variable
<< |< 1 2 3 4 5 6 7 8 >| >> 77 Einträge, 8 Seiten



View all threads created 2008-07-03 17:04.