Τώρα είναι Πέμ 28 Μαρ 2024 03:38 pm

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 9 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
 Θέμα δημοσίευσης: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Παρ 16 Ιαν 2009 05:03 pm 
Χωρίς σύνδεση

Εγγραφή: Τετ 22 Οκτ 2008 12:08 pm
Δημοσιεύσεις: 31
Τοποθεσία: Αθήνα
Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΦΙΛΟΙ_ΑΡΙΘΜΟΙ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Χ , Υ , Σ1 , Σ2 , Κ1 , Κ2 , Μ , Ν , ΜΕΤ , ΖΕΥ
  ΧΑΡΑΚΤΗΡΕΣ: ΑΠ
ΑΡΧΗ
  ΓΡΑΨΕ 'Πάλι στους Πυθαγόρειους οφείλονται και οι φίλοι αριθμοί.'
  ΓΡΑΨΕ 'Δυο αριθμοί λέγονται φίλοι αν ο καθένας ισούται'
  ΓΡΑΨΕ 'με το άθροισμα των γνήσιων διαιρετών του άλλου.'
  ΓΡΑΨΕ 'Για παράδειγμα το 220 και το 284.'
  ΓΡΑΨΕ '======================================================'
  ΓΡΑΨΕ 'ΤΟ ΠΡΟΓΡΑΜΜΑ ΑΥΤΟ ΕΛΕΓΧΕΙ ΓΙΑ ΤΥΧΟΝ ΖΕΥΓΑΡΙΑ ΦΙΛΩΝ ΑΡΙΘΜΩΝ'
  ΓΡΑΨΕ 'ΜΕΣΑ ΣΤΑ ΑΚΕΡΑΙΑ ΟΡΙΑ ΠΟΥ ΔΙΝΕΙ Ο ΧΡΗΣΤΗΣ'
  ΓΡΑΨΕ 'ΘΕΛΕΤΕ ΝΑ ΕΚΤΕΛΕΣΕΤΕ ΤΟ ΠΡΟΓΡΑΜΜΑ? ΠΑΡΑΚΑΛΩ ΓΡΑΨΤΕ ΣΕ ΚΕΦΑΛΑΙΑ ΕΛΛΗΝΙΚΑ'
  ΓΡΑΨΕ ' 1.ΝΑΙ'
  ΓΡΑΨΕ ' 2.ΟΧΙ'
  ΔΙΑΒΑΣΕ ΑΠ
  ΟΣΟ ΑΠ <>'ΟΧΙ' ΚΑΙ ΑΠ <> 'ΝΑΙ' ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ'ΣΥΓΝΩΜΗ ΑΛΛΑ ΔΕΝ ΓΡΑΨΑΤΕ ΣΕ ΚΕΦΑΛΑΙΑ ΕΛΛΗΝΙΚΑ'
    ΔΙΑΒΑΣΕ ΑΠ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΟΣΟ ΑΠ = 'ΝΑΙ' ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΤΟΝ ΑΡΙΘΜΟ ΑΠΟ ΤΟΝ ΟΠΟΙΟ ΘΑ ΞΕΚΙΝΙΣΕΙ Ο ΕΛΕΓΧΟΣ'
    ΔΙΑΒΑΣΕ Μ
    ΓΡΑΨΕ'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΤΟΝ ΑΡΙΘΜΟ ΑΠΟ ΤΟΝ ΟΠΟΙΟ ΘΑ ΤΕΛΕΙΩΣΕΙ Ο ΕΛΕΓΧΟΣ'
    ΔΙΑΒΑΣΕ Ν
    ΟΣΟ  Μ >= Ν ΕΠΑΝΑΛΑΒΕ
      ΓΡΑΨΕ 'ΔΩΣΑΤΕ ΑΡΙΘΜΟ ΜΙΚΡΟΤΕΡΟ ΑΠΟ ΤΟΝ ΑΡΙΘΜΟ ΕΝΑΡΞΗΣ.'
      ΓΡΑΨΕ 'ΠΑΡΑΚΑΛΩ ΔΩΣΤΕ ΕΝΑΝ ΜΕΓΑΛΥΤΕΡΟ ΤΟΥ ', Μ
      ΔΙΑΒΑΣΕ Ν
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΖΕΥ <-- 0
    ΜΕΤ <-- 1
    ΓΙΑ Χ ΑΠΟ Μ ΜΕΧΡΙ Ν
      ΑΝ Χ <> ΜΕΤ ΤΟΤΕ  !ΤΟ ΕΒΑΛΑ ΑΥΤΟ ΔΙΟΤΙ ΔΙΑΠΙΣΤΩΣΑ ΠΩΣ ΘΑ ΕΜΦΑΝΙΣΕΙ 2 ΦΟΡΕΣ ΤΟ ΖΕΥΓΑΡΙ ΟΤΑΝ !
        Σ1 <-- 1        !ΤΟ Χ ΘΑ ΠΑΡΕΙ ΤΗΝ ΤΙΜΗ ΤΟΥ Υ!
        Κ1 <-- 1
        ΟΣΟ Κ1<=Χ^(1/2) ΕΠΑΝΑΛΑΒΕ
          Κ1 <-- Κ1+1
          ΑΝ Χ MOD Κ1 = 0 ΤΟΤΕ
            Σ1 <-- Σ1+Κ1+Χ DIV Κ1
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
        ΓΙΑ Υ ΑΠΟ Μ ΜΕΧΡΙ Ν
          ΑΝ Χ <> Υ ΤΟΤΕ
            Σ2 <-- 1
            Κ2 <-- 1
            ΟΣΟ Κ2<=Υ^(1/2) ΕΠΑΝΑΛΑΒΕ
              Κ2 <-- Κ2+1
              ΑΝ Υ MOD Κ2 = 0 ΤΟΤΕ
                Σ2 <-- Σ2+Κ2+Υ DIV Κ2
              ΤΕΛΟΣ_ΑΝ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
            ΑΝ Σ2 = Χ ΚΑΙ Σ1 = Υ ΤΟΤΕ
              ΓΡΑΨΕ'ΒΡΕΘΗΚΕ ΖΕΥΓΑΡΙ ΦΙΛΩΝ ΑΡΙΘΜΩΝ , ΕΙΝΑΙ ΟΙ',Χ,Υ
              ΖΕΥ <-- ΖΕΥ +1
              ΜΕΤ <-- Υ
            ΤΕΛΟΣ_ΑΝ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ ΖΕΥ = 0 ΤΟΤΕ
      ΓΡΑΨΕ 'ΔΕΝ ΒΡΕΘΗΚΑΝ ΖΕΥΓΑΡΙΑ ΣΤΑ ΟΡΙΑ ΠΟΥ ΘΕΣΑΤΕ'
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'ΒΡΕΘΗΚΑΝ', ΖΕΥ , 'ΖΕΥΓΑΡΙΑ'
    ΤΕΛΟΣ_ΑΝ
    ΓΡΑΨΕ ' ΘΕΛΕΤΕ ΝΑ ΞΑΝΑΚΑΝΕΤΕ ΕΛΕΓΧΟ?'
    ΓΡΑΨΕ'   1.ΝΑΙ'
    ΓΡΑΨΕ'   2.ΟΧΙ'
    ΔΙΑΒΑΣΕ ΑΠ
    ΟΣΟ ΑΠ <>'ΟΧΙ' ΚΑΙ ΑΠ <> 'ΝΑΙ' ΕΠΑΝΑΛΑΒΕ
      ΓΡΑΨΕ'ΣΥΓΝΩΜΗ ΑΛΛΑ ΔΕΝ ΓΡΑΨΑΤΕ ΣΕ ΚΕΦΑΛΑΙΑ ΕΛΛΗΝΙΚΑ ΕΙΤΕ ΔΕΝ ΓΡΑΨΕΤΕ ΜΙΑ ΑΠΟ ΤΙΣ ΔΥΟ ΕΠΙΛΟΓΕΣ'
      ΔΙΑΒΑΣΕ ΑΠ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'ΕΥΧΑΡΙΣΤΩ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΣΑΤΕ ΤΟ ΠΡΟΓΡΑΜΜΑ.'
  ΓΡΑΨΕ '                                  MADE BY YURIS'
  ΓΡΑΨΕ '                                         3η ΛΥΚΕΙΟΥ - 2ο ΛΥΚΕΙΟ ΣΠΑΡΤΗΣ.'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Τώρα δουλεύει σωστά :D

Έχω μια απορία και παρακαλώ όποιον ξέρει να μου απαντήσει
Θέλω να δημιουργεί ένα πρόγραμμά μου τυχαίους αριθμούς , από όσα ξέρω θα πρέπει να χρησιμοποιήσω την συνάρτηση
ΤΥΧΑΙΟΣ αλλά δεν ξέρω πως χρησιμοποιήται!

_________________
"The ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy."
- Martin Luther King Jr. -


Τελευταία επεξεργασία από Sudavar{SP} και Τετ 21 Ιαν 2009 01:56 pm, έχει επεξεργασθεί 4 φορά/ες συνολικά

Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Παρ 16 Ιαν 2009 09:02 pm 
Χωρίς σύνδεση

Εγγραφή: Τετ 22 Οκτ 2008 12:08 pm
Δημοσιεύσεις: 31
Τοποθεσία: Αθήνα
ΞΕΧΑΣΑ ΝΑ ΑΝΑΦΕΡΩ ΠΩΣ ΟΣΟΙ ΕΝΔΙΑΦΕΡΟΝΤΑΙ ΝΑ ΤΡΕΞΟΥΝ ΤΟ ΠΡΟΓΡΑΜΜΑ , ΣΥΝΕΤΟ ΘΑ ΗΤΑΝ ΝΑ ΤΟ ΚΑΝΟΥΝ ΜΕΣΑ ΑΠΟ ΤΗΝ ΓΛΩΣΣΟΜΑΘΕΙΑ 8.5 ΔΗΑΛΔΗ ΤΟΝ ΜΕΤΑΓΛΩΤΙΣΤΗ ΔΙΟΤΙ ΑΛΛΙΩΣ Η ΕΚΤΕΛΕΣΗ ΕΙΝΑΙ ΑΡΚΕΤΑ ΑΡΓΗ.

_________________
"The ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy."
- Martin Luther King Jr. -


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 17 Ιαν 2009 12:22 am 
Χωρίς σύνδεση

Εγγραφή: Παρ 30 Μάιος 2008 09:46 pm
Δημοσιεύσεις: 49
Μου άρεσε πάρα πολύ η ιδέα :D . Ένας άλλος τρόπος, λίγο πιο γρήγορος, ακολουθεί. Δεν το έχω δοκιμάσει αρκετά :( οπότε άμα βρείτε κάποιο λάθος παρακαλώ να με ειδοποιήσετε. Και αυτό θα ήταν καλό να “τρέξει” στην έκδοση 8.5 για γρήγορα αποτελέσματα αλλά νομίζω ότι για σχετικά μικρούς αριθμούς έχει καλή απόδοση και στην 9.2.
Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΦΙΛΟΙ_ΑΡΙΘΜΟΙ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Σ1, Σ2, Χ1, ΜΙΚ, ΜΕΓ, Ι
ΑΡΧΗ
  ΓΡΑΨΕ 'Πάλι στους Πυθαγόρειους οφείλονται και οι φίλοι αριθμοί.'
  ΓΡΑΨΕ 'Δυο αριθμοί λέγονται φίλοι αν ο καθένας ισούται'
  ΓΡΑΨΕ 'με το άθροισμα των γνήσιων διαιρετών του άλλου.'
  ΓΡΑΨΕ '---------------------------------------------------------'
  ΓΡΑΨΕ 'Παρακαλώ δώστε τον αριθμό από τον οποίο θα αρχίσει να ψάχνει το πρόγραμμα.'
  ΔΙΑΒΑΣΕ ΜΙΚ
  ΓΡΑΨΕ 'Παρακαλώ δώστε τον αριθμό στον οποίο θα σταματήσει το πρόγραμμα.'
  ΔΙΑΒΑΣΕ ΜΕΓ
  ΑΝ ΜΕΓ<=ΜΙΚ Ή ΜΙΚ < 0 ΤΟΤΕ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'Οι αριθμοί πρέπει να είναι μη αρνητικοί και ο 1ος μικρότερος από τον 2ο. παρακαλώ ξανα δώστε τους αριθμούς.'
      ΔΙΑΒΑΣΕ ΜΙΚ
      ΔΙΑΒΑΣΕ ΜΕΓ
    ΜΕΧΡΙΣ_ΟΤΟΥ ΜΙΚ < ΜΕΓ ΚΑΙ ΜΙΚ >= 0
  ΤΕΛΟΣ_ΑΝ
  ΓΙΑ Χ1 ΑΠΟ ΜΙΚ ΜΕΧΡΙ ΜΕΓ
    Σ1 <-- 1
    Σ2 <-- 1
    ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Α_Μ(Τ_Ρ(Χ1))
      ΑΝ Χ1 MOD Ι = 0 ΤΟΤΕ
        Σ1 <-- Σ1+Ι+(Χ1 DIV Ι)
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ Σ1 > Χ1 ΤΟΤΕ
      Ι <-- 1
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        Ι <-- Ι + 1
        ΑΝ Σ1 MOD Ι = 0 ΤΟΤΕ
          Σ2 <-- Σ2 + Ι + (Σ1 DIV Ι)
        ΤΕΛΟΣ_ΑΝ
      ΜΕΧΡΙΣ_ΟΤΟΥ Σ2>Σ1 Ή  Α_Μ(Τ_Ρ(Χ1))=Ι Ή Ι>Χ1  !ΑΥΤΟ ΤΟ ΕΒΑΛΑ ΓΙΑΤΙ ΓΙΑ ΑΡΙΘΜΟΥΣ ΟΠΩΣ ΤΟ 0
      ΑΝ Χ1=Σ2 ΚΑΙ Σ2 <= ΜΕΓ ΚΑΙ Σ2 >= ΜΙΚ ΤΟΤΕ   !ΚΑΙ ΤΟ 1 ΠΡΟΣΠΕΡΝΑΕΙ ΚΑΤΕΥΘΕΙΑΝ ΤΗΝ ΤΙΜΗ ΤΟΥΣ ΤΟ Ι (ΑΡΧΙΖΕΙ ΑΠΟ ΤΟ 2)
        ΓΡΑΨΕ 'ΟΙ ΑΡΙΘΜΟΙ', Χ1, Σ1, 'ΕΙΝΑΙ ΦΙΛΟΙ.'
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

_________________
"Δύο πράγματα είναι ατελείωτα (άπειρα), το σύμπαν και η ανθρώπινη βλακεία, για το 1ο δεν είμαι σίγουρος." Einstein
"Τα πάντα ρει" (Τα πάντα ρέουν/αλλάζουν) Ηράκλειτος
"Μη μου τους κύκλους τάραττε" Αρχιμήδης


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 17 Ιαν 2009 12:58 am 
Χωρίς σύνδεση

Εγγραφή: Τετ 22 Οκτ 2008 12:08 pm
Δημοσιεύσεις: 31
Τοποθεσία: Αθήνα
ΜΑΛΙΣΤΑ ΦΙΛΕ ΜΟΥ ΠΟΛΥ ΩΡΑΙΟ ΤΟ ΠΡΟΓΡΑΜΜΑ ΣΟΥ ΑΝ ΚΑΙ ΔΕΝ ΚΑΤΑΛΑΒΑ ΑΚΡΙΒΟΣ ΠΩΣ ΚΑΤΑΦΕΡΝΕΙ ΝΑ ΦΤΑΣΕΙ ΣΤΟ ΑΠΟΤΕΛΕΣΜΑ , ΟΝΤΩΣ ΕΙΝΑΙ ΠΙΟ ΓΡΗΓΟΡΟ ΚΑΙ ΣΥΓΧΑΡΗΤΗΡΙΑ . ΜΙΑ ΠΑΡΑΚΛΙΣΗ ΜΟΝΟ ΑΝ ΓΙΝΕΤΑΙ ΚΑΙ ΕΧΕΙΣ ΟΡΕΞΗ , ΝΑ ΕΞΗΓΗΣΕΙΣ ΠΩΣ ΑΚΡΙΒΩΣ ΦΤΑΝΕΙ ΣΤΟ ΑΠΟΤΕΛΕΣΜΑ.

_________________
"The ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy."
- Martin Luther King Jr. -


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 17 Ιαν 2009 09:54 pm 
Χωρίς σύνδεση

Εγγραφή: Παρ 30 Μάιος 2008 09:46 pm
Δημοσιεύσεις: 49
Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΦΙΛΟΙ_ΑΡΙΘΜΟΙ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Σ1, Σ2, Χ1, ΜΙΚ, ΜΕΓ, Ι
ΑΡΧΗ
  ΓΡΑΨΕ 'Πάλι στους Πυθαγόρειους οφείλονται και οι φίλοι αριθμοί.'
  ΓΡΑΨΕ 'Δυο αριθμοί λέγονται φίλοι αν ο καθένας ισούται'
  ΓΡΑΨΕ 'με το άθροισμα των γνήσιων διαιρετών του άλλου.'
  ΓΡΑΨΕ '---------------------------------------------------------'
  ΓΡΑΨΕ 'Παρακαλώ δώστε τον αριθμό από τον οποίο θα αρχίσει να ψάχνει το πρόγραμμα.'
  ΔΙΑΒΑΣΕ ΜΙΚ
  ΓΡΑΨΕ 'Παρακαλώ δώστε τον αριθμό στον οποίο θα σταματήσει το πρόγραμμα.'
  ΔΙΑΒΑΣΕ ΜΕΓ
  ΑΝ ΜΕΓ<=ΜΙΚ Ή ΜΙΚ < 0 ΤΟΤΕ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'Οι αριθμοί πρέπει να είναι μη αρνητικοί και ο 1ος μικρότερος από τον 2ο. παρακαλώ ξανα δώστε τους αριθμούς.'
      ΔΙΑΒΑΣΕ ΜΙΚ
      ΔΙΑΒΑΣΕ ΜΕΓ
    ΜΕΧΡΙΣ_ΟΤΟΥ ΜΙΚ < ΜΕΓ ΚΑΙ ΜΙΚ >= 0
  ΤΕΛΟΣ_ΑΝ

Υποθέτω ότι δεν υπάρχει κάποια απορία για τα παραπάνω άρα αρχίζω από εδώ αφού εξηγήσω της μεταβλητές.
Σ1: κρατάει το άθροισμα των διαιρετών του αριθμού που εξετάζουμε
Σ2:κρατάει το άθροισμα των διαιρετών του αριθμού που ελέγχουμε 2ο
Χ1: ο αριθμός που εξετάζετε
ΜΙΚ: ο αριθμός από τον οποίο θα αρχίσουμε να ψάχνουμε ζευγάρια φίλων αριθμών
ΜΕΓ: ο τελευταίος (και μεγαλύτερος) αριθμός που θα εξεταστεί
Ι: τιμή που χρησιμοποιείτε σαν μετρητής στις επαναλήψεις
Syntax: [ Download ] [ Hide ]
ΓΙΑ Χ1 ΑΠΟ ΜΙΚ ΜΕΧΡΙ ΜΕΓ

Σε αυτό παίρνουμε έναν-έναν τους αριθμούς που είναι στα όρια που έχει δώσει ο χρήστης.

Οι φίλοι αριθμοί πάνε σε ζευγάρια (των 2). Και κάθε αριθμός έχει μόνο έναν φίλο (αν έχει). Άρα βρίσκουμε το άθροισμα των διαιρετών (χωρίς τον ίδιο τον αριθμό) του αριθμού.
Syntax: [ Download ] [ Hide ]
Σ1 <-- 1
    Σ2 <-- 1
    ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Α_Μ(Τ_Ρ(Χ1))
      ΑΝ Χ1 MOD Ι = 0 ΤΟΤΕ
        Σ1 <-- Σ1+Ι+(Χ1 DIV Ι)
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Η επανάληψη αρχίζει από το 2 γιατί κάθε φορά που εκτελείται και βρίσκει έναν διαιρέτη προσθέτει τον διαιρέτη και τον αριθμό με τον οποίο αν πολλαπλασιάσουμε τον διαιρέτη μας δίνει τον Χ1, άμα άρχιζε από το 1 η επανάληψη θα πρόσθετε στο Σ1 και τον αριθμό και την μονάδα. Για αυτό και για να μην χαθεί το 1 που είναι διαιρέτης του, αρχίζει με την τιμή 1 το Σ1 και όχι με 0. Η επανάληψη τελειώνει στο Α_Μ(Τ_Ρ(Χ1)) επειδή:
α΄) Α_Μ , γιατί η Τ_Ρ μπορεί να επιστρέψει δεκαδική τιμή και το Ι είναι ακέραιο.
β΄) Τ_Ρ επειδή άμα βρούμε τους διαιρέτες μέχρι την τετραγωνική ρίζα ενός αριθμού μαζί με τους αριθμούς που χρειάζεται για να βγει γινόμενο ο αριθμός έχουμε βρει όλους τους διαιρέτες.
γ΄) το Χ1 επειδή κάθε διαιρέτης ενός αριθμού είναι μικρότερος από τον αριθμό
το Σ2 παίρνει την τιμή 1 για το παρακάτω.

Syntax: [ Download ] [ Hide ]
ΑΝ Σ1 > Χ1 ΤΟΤΕ

Αυτό μπαίνει για να μην βρίσκει το ίδιο ζεύγος 2η φορά. Ίδια αποτελέσματα θα είχε το ΑΝ Σ1 <Χ1 ΤΟΤΕ το σ1=χ1 σημαίνει ότι ο αριθμός είναι τέλειος αλλά δεν μας ενδιαφέρει σε αυτό. Επίσης αν σ1=χ1 τότε θα έβρισκε τον εαυτό του ως φίλο του.
ένας αριθμός μπορεί να έχει μόνο έναν φίλο αφού το άθροισμα των ψηφίων του είναι μόνο 1
παρακάτω ελέγχει αν ο αριθμός που ισούται με το άθροισμα των ψηφίων του Χ1 έχει άθροισμα ψηφίων (πάντα χωρίς τον ίδιο τον αριθμό) ίσο με Χ1
Syntax: [ Download ] [ Hide ]
 Ι <-- 1
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        Ι <-- Ι + 1
        ΑΝ Σ1 MOD Ι = 0 ΤΟΤΕ
          Σ2 <-- Σ2 + Ι + (Σ1 DIV Ι)
        ΤΕΛΟΣ_ΑΝ
      ΜΕΧΡΙΣ_ΟΤΟΥ Σ2>Χ1 Ή  Α_Μ(Τ_Ρ(Χ1))=Ι Ή Ι>Χ1  !ΑΥΤΟ ΤΟ ΕΒΑΛΑ ΓΙΑΤΙ ΓΙΑ ΑΡΙΘΜΟΥΣ ΟΠΩΣ ΤΟ 0

(εδώ άλλαξα το Σ1 σε Χ1 εκεί που λέει Σ2>Χ1)
Η επανάληψη πρέπει να σταματάει στις εξής περιπτώσεις:
i. Το άθροισμα των διαιρετών του 2ου αριθμού είναι μεγαλύτερο από τον πρώτο αριθμό. Δεν υπάρχει περίπτωση να μειωθεί.
ii. Έχει βρει όλους τους διαιρέτες
iii. Το Ι είναι μεγαλύτερο του Χ1 κάτι που συμβαίνει στις περιπτώσεις που το Χ1 είναι μικρό όπως 0 ή 1

Syntax: [ Download ] [ Hide ]
ΑΝ Χ1=Σ2 ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ ΤΟΤΕ   !ΚΑΙ ΤΟ 1 ΠΡΟΣΠΕΡΝΑΕΙ ΚΑΤΕΥΘΕΙΑΝ ΤΗΝ ΤΙΜΗ ΤΟΥΣ ΤΟ Ι (ΑΡΧΙΖΕΙ ΑΠΟ ΤΟ 2)
        ΓΡΑΨΕ 'ΟΙ ΑΡΙΘΜΟΙ', Χ1, Σ1, 'ΕΙΝΑΙ ΦΙΛΟΙ.'
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Τέλος ελέγχει αν το άθροισμα των διαιρετών και του 2ου αριθμού είναι ίσα με τον 1ο (το αντίστροφο δεν χρειάζεται έλεγχο γιατί ο αριθμός έχει επιλεχτεί σύμφωνα με το άθροισμα των διαιρετών του 1ου )και αν ο αριθμός είναι μέσα στα όρια που έχει θέσει ο χρήστης. (αν το ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ αφαιρεθεί θα επιστρέφει το ζεύγος και ας είναι ο 2ος εκτός ορίων).
Α και κάτι που παραλίγο να ξεχάσω, αυτό για λίγο ακόμη πιο γρήγορα, άλλαξα το ΑΝ Σ1 > Χ1 ΤΟΤΕ σε ΑΝ Σ1 > Χ1 ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ ΤΟΤΕ και το ΑΝ Χ1=Σ2 ΚΑΙ Σ2 <= ΜΕΓ ΚΑΙ Σ2 >= ΜΙΚ ΤΟΤΕ σε ΑΝ Χ1=Σ2 ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ ΤΟΤΕ το οποίο αλλάζει αφού ελέγχονται παραπάνω η 2η και η 3η συνθήκη χωρις να αλλάζουν μετά σε ΑΝ Χ1=Σ2 ΤΟΤΕ. Το ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ στο ΑΝ Σ1 > Χ1 ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ ΤΟΤΕ αν αφαιρεθεί θα δίνει το ζεύγος όπου και αν είναι ο 2ος αριθμός.
Ακολουθεί το πρόγραμμα με τις αλλαγές που έκανα(ΑΝ Σ1 > Χ1 ΤΟΤΕ το αφισα έτσι για να δείνει τον 2ο αριθμό όπου και αν βρίσκετε) :
Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΦΙΛΟΙ_ΑΡΙΘΜΟΙ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Σ1, Σ2, Χ1, ΜΙΚ, ΜΕΓ, Ι
ΑΡΧΗ
  ΓΡΑΨΕ 'Πάλι στους Πυθαγόρειους οφείλονται και οι φίλοι αριθμοί.'
  ΓΡΑΨΕ 'Δυο αριθμοί λέγονται φίλοι αν ο καθένας ισούται'
  ΓΡΑΨΕ 'με το άθροισμα των γνήσιων διαιρετών του άλλου.'
  ΓΡΑΨΕ '---------------------------------------------------------'
  ΓΡΑΨΕ 'Παρακαλώ δώστε τον αριθμό από τον οποίο θα αρχίσει να ψάχνει το πρόγραμμα.'
  ΔΙΑΒΑΣΕ ΜΙΚ
  ΓΡΑΨΕ 'Παρακαλώ δώστε τον αριθμό στον οποίο θα σταματήσει το πρόγραμμα.'
  ΔΙΑΒΑΣΕ ΜΕΓ
  ΑΝ ΜΕΓ<=ΜΙΚ Ή ΜΙΚ < 0 ΤΟΤΕ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'Οι αριθμοί πρέπει να είναι μη αρνητικοί και ο 1ος μικρότερος από τον 2ο. παρακαλώ ξανα δώστε τους αριθμούς.'
      ΔΙΑΒΑΣΕ ΜΙΚ
      ΔΙΑΒΑΣΕ ΜΕΓ
    ΜΕΧΡΙΣ_ΟΤΟΥ ΜΙΚ < ΜΕΓ ΚΑΙ ΜΙΚ >= 0
  ΤΕΛΟΣ_ΑΝ
  ΓΙΑ Χ1 ΑΠΟ ΜΙΚ ΜΕΧΡΙ ΜΕΓ
    Σ1 <-- 1
    Σ2 <-- 1
    ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Α_Μ(Τ_Ρ(Χ1))
      ΑΝ Χ1 MOD Ι = 0 ΤΟΤΕ
        Σ1 <-- Σ1+Ι+(Χ1 DIV Ι)
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ Σ1 > Χ1 Ή Σ1 < ΜΙΚ ΤΟΤΕ
      Ι <-- 1
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        Ι <-- Ι + 1
        ΑΝ Σ1 MOD Ι = 0 ΤΟΤΕ
          Σ2 <-- Σ2 + Ι + (Σ1 DIV Ι)
        ΤΕΛΟΣ_ΑΝ
      ΜΕΧΡΙΣ_ΟΤΟΥ Σ2>Χ1 Ή  Α_Μ(Τ_Ρ(Χ1))=Ι Ή Ι>Χ1 !ΑΥΤΟ ΤΟ ΕΒΑΛΑ ΓΙΑΤΙ ΓΙΑ ΑΡΙΘΜΟΥΣ ΟΠΩΣ ΤΟ 0
      ΑΝ Χ1=Σ2 ΤΟΤΕ  !ΚΑΙ ΤΟ 1 ΠΡΟΣΠΕΡΝΑΕΙ ΚΑΤΕΥΘΕΙΑΝ ΤΗΝ ΤΙΜΗ ΤΟΥΣ ΤΟ Ι (ΑΡΧΙΖΕΙ ΑΠΟ ΤΟ 2)
        ΓΡΑΨΕ 'ΟΙ ΑΡΙΘΜΟΙ', Χ1, Σ1, 'ΕΙΝΑΙ ΦΙΛΟΙ.'
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Αν κάτι δεν έχω εξηγήσει ή δεν έχω εξηγήσει καλά ή υπάρχει κάποια ερώτηση ακόμα, ευπρόσδεκτη :)

Παράθεση:
ΣΤΟΙΧΕΙΟ: Γεννήτρια ψευδοτυχαίων αριθμών

ΣΥΝΤΑΞΗ: ΤΥΧΑΙΟΣ(επάνω_όριο)

ΠΑΡΑΔΕΙΓΜΑ: x <-- ΤΥΧΑΙΟΣ(100)
ΓΡΑΨΕ ΤΥΧΑΙΟΣ(10)+1

ΣΧΟΛΙΑ:Η συνάρτηση ΤΥΧΑΙΟΣ δημιουργεί ψευδοτυχαίους αριθμούς, η τιμή των οποίων κυμαίνεται ως εξής: 0 <= αριθμός < επάνω_όριο.

Το παραπάνω είναι από την βοήθεια της γλωσσομάθειας 8.5 στην οποία χρησιμοποιείτε (οι καινούριες εκδόσεις, αυτές μετά την 8.5, δεν την έχουν από όσο ξέρω)
Βάζεις έναν αριθμό στην παρένθεση και η συνάρτηση σου επιστρέφει έναν τυχαίο ακέραιο ο οποίος είναι μικρότερος αυτού που έβαλες και μεγαλύτερος ή ίσος του 0, μετά μπορείς να προσθέσεις κάποιον αριθμό σε αυτόν για να το φτάσεις στα όρια που θες.
Εγώ θα ήθελα αν γίνετε να μάθω τι κάνει ακριβός η ΤΥΧΑΙΟΣ γιατί για να λέει ψευδοτυχαίους δεν θα είναι εντελώς τυχαίοι, μάλλον θα υπακούν σε κάποιο τύπο ή κάτι τέτοιο, αν ξέρει κάποιος θα τον παρακαλούσα να πει.

_________________
"Δύο πράγματα είναι ατελείωτα (άπειρα), το σύμπαν και η ανθρώπινη βλακεία, για το 1ο δεν είμαι σίγουρος." Einstein
"Τα πάντα ρει" (Τα πάντα ρέουν/αλλάζουν) Ηράκλειτος
"Μη μου τους κύκλους τάραττε" Αρχιμήδης


Τελευταία επεξεργασία από periklis93 και Κυρ 18 Ιαν 2009 02:15 pm, έχει επεξεργασθεί 1 φορά/ες συνολικά

Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Κυρ 18 Ιαν 2009 01:57 am 
Χωρίς σύνδεση
Διαχειριστής

Εγγραφή: Παρ 28 Φεβ 2003 06:10 pm
Δημοσιεύσεις: 84
Όσο κι αν ακούγεται παράξενο οι υπολογιστές προς το παρόν δεν μπορούν να παράξουν πραγματικά τυχαίους αριθμούς.
Η δημιουργία ψευδοτυχαίων αριθμών συνήθως αποτελείται από 2 στάδια:
  • Στο ξεκίνημα του προγράμματος δημιουργείται μια αρχική τιμή (seed) βασισμένη στο ρολόι του συστήματος, ώστε κάθε φορά να είναι διαφορετική.
  • Υπάρχει καθορισμένος αλγόριθμος που παίρνοντας σαν δεδομένο αυτήν την αρχική τιμή μπορεί να δημιουργήσει μια ακολουθία -προβλεπόμενων αλλά φαινομενικά άσχετων μεταξύ τους- αριθμών. Έτσι κάθε φορά που το πρόγραμμα χρειάζεται έναν "τυχαίο" αριθμό επιστρέφεται ο επόμενος αυτής της ακολουθίας.


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Κυρ 18 Ιαν 2009 02:19 pm 
Χωρίς σύνδεση

Εγγραφή: Παρ 30 Μάιος 2008 09:46 pm
Δημοσιεύσεις: 49
Ευχαριστώ πολύ για την απάντηση.
Και να προσθέσω άλλη μια αλλαγή στο πρόγραμμα. Η γραμμή
Syntax: [ Download ] [ Hide ]
ΑΝ Σ1 > Χ1 ΤΟΤΕ
πρέπει να γίνει
Syntax: [ Download ] [ Hide ]
ΑΝ Σ1 > Χ1 Ή Σ1 < ΜΙΚ ΤΟΤΕ
για να δίνει τον 2ο όπου και αν βρίσκετε και ταυτοχρωνα να μην δίνει το ίδιο ζευγάρι 2 φορές. Αυτό πρέπει να γίνει γιατί αν ο 2ος ήταν εκτός ορίων και μικρότερος από τον ΜΙΚ δεν έλεγχε αν είναι φίλοι. (για να είναι στα όρια που έχει βάλει ο χρήστης πρέπει να είναι ΑΝ Σ1 > Χ1 ΚΑΙ Σ1 <= ΜΕΓ ΚΑΙ Σ1 >= ΜΙΚ ΤΟΤΕ).
Έκανα την αλλαγή στην προηγούμενη απάντηση. Συγνώμη που γράφω τις αλλαγές μια-μια αλλά δεν το έχω δοκιμάσει αρκετά λόγο του μεγέθους των ζευγαριών ώστε να βρω όλα τα λάθη.

_________________
"Δύο πράγματα είναι ατελείωτα (άπειρα), το σύμπαν και η ανθρώπινη βλακεία, για το 1ο δεν είμαι σίγουρος." Einstein
"Τα πάντα ρει" (Τα πάντα ρέουν/αλλάζουν) Ηράκλειτος
"Μη μου τους κύκλους τάραττε" Αρχιμήδης


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Κυρ 18 Ιαν 2009 03:07 pm 
Χωρίς σύνδεση

Εγγραφή: Τετ 22 Οκτ 2008 12:08 pm
Δημοσιεύσεις: 31
Τοποθεσία: Αθήνα
ΠΡΕΠΕΙ ΝΑ ΠΩ ΠΩΣ ΕΚΑΝΑ ΕΝΑ ΤΡΑΓΙΚΟ ΛΑΘΟΣ ΣΤΗ ΓΡΑΜΜΗ 36 ΚΑΙ ΣΤΗ ΓΡΑΜΜΗ 46 ΟΠΟΥ ΕΙΧΑ ΓΡΑΨΕΙ (Χ^1/2) ΚΑΙ (Υ^1/2) ΑΝΤΙΣΤΟΙΧΑ ΕΝΩ ΗΘΕΛΑ ΝΑ ΓΡΑΨΩ , ΟΠΩΣ ΤΟ ΕΧΩ ΔΙΟΡΘΩΣΕΙ Χ^(1/2) ΚΑΙ Υ^(1/2) ΓΙΑ ΝΑ ΜΗΝ ΧΡΗΣΙΜΟΠΟΙΗΣΩ ΤΗΝ ΣΥΝΑΡΤΗΣΗ Τ_Ρ(Χ).
ΑΚΟΜΗ ΛΑΘΟΣ ΜΕΓΑΛΟ ΗΤΑΝ ΠΟΥ ΕΓΡΑΦΑ Σ1 <-- Σ1+Κ1 ΚΑΙ Σ2 <-- Σ2+Κ2 , ΚΑΙ ΟΧΙ Σ1 <-- Σ1+Κ1+Χ DIV Κ1 ΚΑΙ Σ2 <-- Σ2+Κ2 +Χ DIV Κ2. ΟΠΩΣ ΚΑΙ ΝΑ ΕΧΕΙ ΣΕ ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ ΠΕΡΙΚΛΗ ΓΙΑ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ ΣΟΥ! ΤΩΡΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΜΟΥ ΕΙΝΑΙ ΤΑΧΥΤΕΡΟ ΑΠΟ ΠΡΙΝ ΜΙΑΣ ΚΑΙ ΥΠΟΛΟΓΙΖΕΙ ΣΑΦΩΣ ΠΟΛΥ ΛΙΓΟΤΕΡΕΣ ΔΙΑΙΡΕΣΕΙΣ.
Υ.Γ. ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΙΣ ΠΛΗΡΟΦΟΡΙΕΣ ΣΧΕΤΙΚΑ ΜΕ ΤΙΝ ΓΕΝΗΤΡΙΑ ΤΥΧΑΙΩΝ ΑΡΙΘΜΩΝ.

_________________
"The ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy."
- Martin Luther King Jr. -


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: ΦΙΛΟΙ ΑΡΙΘΜΟΙ
ΔημοσίευσηΔημοσιεύτηκε: Τρί 28 Φεβ 2012 04:50 pm 
Χωρίς σύνδεση

Εγγραφή: Τρί 28 Φεβ 2012 04:46 pm
Δημοσιεύσεις: 2
ρε φίλε πως μπορώ να κάνω στην γλωσσομάθεια να διαβάζει ένα οποιοδήποτε αριθμό και να μου βρίσκεις τους διαρέτες του. δηλαδή να δινω 6 και να μου γράφει 1,2,3,6 αυτό... έχω σπάσει το κεφάλι μου δεν μπορώ να βρω πως... το γράφω εδώ διότι λογικά εσυ θα το χρησιμοποίησες μέσα στο πρόγραμμα σου... περιμένω εν αγωνίως την απάντηση σου...


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 9 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


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

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


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
cron
Προβολές: