Δημοσιεύτηκε: 29 Μαρ 2011, 18:03
από Star_Light
Σε αυτο το θρέντ μπορούμε να βάζουμε μικρής κάπως έκτασης πηγαίων κωδικών αφού έχουμε ψάξει πρώτα και δεν μπορούμε να κατανοήσουμε ή κολλάμε κάπου.... κάνω την αρχή!!!!!

Κώδικας: Επιλογή όλων
#include<stdio.h>
int main()
{
int primes[25];
int counter=1;
int start=3;
int prime;
int i;

primes[0]=2;
printf("2");
while(counter<25)
{
prime=1;
for(i=0; i<counter&&prime; i++)
if(!(start%primes[i])) prime=0;
if(prime)
{
printf("%d",start);
primes[counter++]=start;
}
start++;
}
{
printf("\n");
}

return 0;
}


ο κώδικας αυτός έχει μια έξοδο της μορφής 24 ακεραίων + 1 απο την printf("2");

παμε λοιπον να τον δουμε πως λειτουργει... αρχικα τυπώνεται το 2 λόγω της printf που βρίσκεται έξω απο τους βρόγχους.
Στην συνεχεια θα ξεκινήσουμε με counter=1 και εφοσον 1 < 25 μπαινει μεσα στην while ορίζοντας το prime σε μια Μη μηδενική τιμή.

Για i=0 μεσα στην for και για οσο το i που θα προκύψει απο την πραξη AND των μεταβλητών counter και prime δεν δωσει μηδενικη τιμη (απο οσο καταλαβα) συνεχιζουμε να το αυξανουμε κατα 1.

παρακατω ΕΑΝ το υπολοιπο της διαιρεσης του start = 3 εδω και του primes[0]=2 εδω υπαρχει το prime δεν εχει μηδενικη τιμη και αρα η if συνεχίζεται

οποτε εφοσον δεν εχει μηδενικη τιμη τυπωνει το 3

και στο primes [ 1 ] βαζει το 3. (δεν αυξανεται εδω το counter του primes παρα μονο μετα την εκχωρηση επειδη εχει τα ++ δεξια του (σωστος?!)

στην συνεχεια αυξανεται το start κατα 1 δηλαδη γινεται 4. και ξαναμπαινουμε στην while εφοσον παλι counter = 1 < 25 προχωρουμε... και το prime = 1
στην for για i=1 και i<counter&&prime οπου δινει παλι μη μηδενικη τιμη προχωρουμε... εφοσον τωρα ομως 4/3 ... τυπωνει παλι 4??? Ενω η εξοδος ειναι 2,3,5...δεν το καταλαβαινω εδω πως παει :?: :?: :?: εκτος και αν υπαρχει το υπολοιπο και αρα δεν μπαινει καθολου οποτε ξανα κανει την επαναληψη για μεγαλυτερο i αλλα και παλι αν υπαρχει το υπολοιπο και το κανει αυτο δεν θα μπει καθολου στο primes[counter++]=start; ωστε να αρχικοποιησει και να χρησιμοποιηθει στην επομενη επαναληψη στο start%primes[i] μεσα στην if ............