Βοήθεια σε προβλημα στην c!!!

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
stauroula89
Δημοσιεύσεις: 3
Εγγραφή: 08 Νοέμ 2010 01:24

Βοήθεια σε προβλημα στην c!!!

Δημοσίευση από stauroula89 » 08 Νοέμ 2010 01:38

/*File:carmichael.c*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAXINUM 1000000

int main()
{
int o,i,p,k,flag,v,s,j,n,m;
for (n=561; n<=MAXINUM; n+=2)
m=n;
o=0;
i=3;
p=0;
k=0;
flag=1;
v=0;
s=1;
j=3;
while ((j<=sqrt(sqrt(n))) && (s=1)){
if (n%j==0)
s=0;
else
j+=2;
}
if (s==0) {
do {
while ((i<=sqrt(m)) && (m!=1)){
if ((m%i==0) && ((n-1)%(i-1)==0)) {
m=m/i;
k++;
if ((flag==1) && (p==1)) {
printf("%3d x ",i);
}
else
i+=2;
}
}
if ((m!=1) && ((n-1)%(m-1)==0) && (k>1)) {
o=m;
p=1;
m=n;
i=3;
if (v==0) {
printf("%3d is a Carmichael number (=",n);
}
else
flag=0;
}
v=v+1;
if ((v==2) && (p==1)) {
printf("%3d )",o);
flag=0;
}
}while (flag=0);
}
o=m;
v=0;
k=0;
return 0;
}
δεν μου τρεχει με τιποτα και δεν μπορω να καταλαβω το γιατι!!βοηθηστε με αν μπορειτε,παρακαλω!!

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια σε προβλημα στην c!!!

Δημοσίευση από virxen75 » 08 Νοέμ 2010 03:21

μήπως έχεις χάσει μερικά ίσον?

while ((j<=sqrt(sqrt(n))) && (s==1)){

}while (flag==0);

stauroula89
Δημοσιεύσεις: 3
Εγγραφή: 08 Νοέμ 2010 01:24

Βοήθεια σε προβλημα στην c!!!

Δημοσίευση από stauroula89 » 08 Νοέμ 2010 11:55

kai pali ta idia.enw kanei compile kai run kanonika,den mou vgazei kanena apotelesma!

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια σε προβλημα στην c!!!

Δημοσίευση από virxen75 » 09 Νοέμ 2010 01:41

for (n=561; n<=MAXINUM; n+=2)
m=n;
........
ποιο το νόημα του for αυτού?
αφού δεν έχει άγκιστρο εκτελεί μόνο μία εντολή πολλές φορές
την m=n

υποθέτω λοιπόν ότι χρειάζεται ένα {
και να κλείνει κάπου προς το τέλος
μάλλον εδώ

Κώδικας: Επιλογή όλων

............
    o=m;
    v=0;
    k=0;
&#125;//<-----------εδώ
getchar&#40;&#41;;
return 0;
&#125; 

και τέλος ο παρακάτω βρόγχος δεν τελειώνει ποτέ!
while ((i<=sqrt(m)) && (m!=1)){
if ((m%i==0) && ((n-1)%(i-1)==0)) {
m=m/i;
k++;
if ((flag==1) && (p==1)) {
printf("%3d x ",i);
}
else
i+=2;
}
}
ισως να πρέπει να γραφεί έτσι

Κώδικας: Επιλογή όλων

            while &#40;&#40;i<=sqrt&#40;m&#41;&#41; && &#40;m!=1&#41;&#41;&#123;
                if &#40;&#40;m%i==0&#41; && &#40;&#40;n-1&#41;%&#40;i-1&#41;==0&#41;&#41; &#123;
                    m=m/i;
                    k++;
                    if &#40;&#40;flag==1&#41; && &#40;p==1&#41;&#41; //εδώ η αλλαγή λείπει το &#123;
                        printf&#40;"%3d x ",i&#41;;
                &#125;else
                    i+=2;
            &#125;
           //εδώ η αλλαγή 2 λείπει το &#125;
δοκίμασε τις προτεινόμενες αλλαγές και πες μου

stauroula89
Δημοσιεύσεις: 3
Εγγραφή: 08 Νοέμ 2010 01:24

Βοήθεια σε προβλημα στην c!!!

Δημοσίευση από stauroula89 » 09 Νοέμ 2010 12:35

den ginetai tipota..:(:(euxaristw pantws pou voithas!!

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια σε προβλημα στην c!!!

Δημοσίευση από virxen75 » 09 Νοέμ 2010 20:12

εμένα με τις πιο πανω προτεινόμενες αλλαγές δίνει αποτελέσματα,τώρα αν είναι σωστά....

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAXINUM 1000000

int main&#40;&#41;&#123;
int o,i=0,p,k,flag,v,s,j,n,m;
    for &#40;n=561; n<=MAXINUM; n+=2&#41;&#123;
        m=n;
        o=0;i=3;
        p=0;k=0;
        flag=1;
        v=0;s=1;j=3;
    while &#40;&#40;j<=sqrt&#40;sqrt&#40;n&#41;&#41;&#41; && &#40;s==1&#41;&#41;&#123;
      if &#40;n%j==0&#41;
           s=0;
        else
            j+=2;
    &#125;
    if &#40;s==0&#41; &#123;
        do &#123;
            while &#40;&#40;i<=sqrt&#40;m&#41;&#41; && &#40;m!=1&#41;&#41;&#123;
                if &#40;&#40;m%i==0&#41; && &#40;&#40;n-1&#41;%&#40;i-1&#41;==0&#41;&#41; &#123;
                    m=m/i;
                    k++;
                    if &#40;&#40;flag==1&#41; && &#40;p==1&#41;&#41;
                        printf&#40;"%3d x ",i&#41;;
                &#125;else
                    i+=2;
            &#125;
            if &#40;&#40;m!=1&#41; && &#40;&#40;n-1&#41;%&#40;m-1&#41;==0&#41; && &#40;k>1&#41;&#41; &#123;
                o=m;p=1;m=n;i=3;
                if &#40;v==0&#41; &#123;
                    printf&#40;"\n%3d is a Carmichael number ",n&#41;;
                &#125;else
                    flag=0;
            &#125;
            v=v+1;
            if &#40;&#40;v==2&#41; && &#40;p==1&#41;&#41; &#123;
                printf&#40;"%3d &#41;",o&#41;;
                flag=0;
            &#125;
        &#125;while &#40;flag==0&#41;;
    &#125;
    o=m;
    v=0;
    k=0;
&#125;
getchar&#40;&#41;;
return 0;
&#125; 

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες