mostel
Πολύ δραστήριο μέλος
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Ωραία προσπάθεια, ωραία σκέψη. Απλώς, στην προκειμένη δε μας βολεύει. Καλώς θα 'ναι να αποφεύγονται τέτοιες "περίεργες" λύσεις όπως και να 'χει.
Φιλικά,
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Φίλε στέλιο δεν νομίζω ότι μιλάει αναγκαστικά για ακέραιους.
Αρκεί να λύσεις το σύστημα
γ*δ=β
γ+δ=α
και προκύπτει ότι δ^2-αδ+β=0, οπότε μπορείς να βρεις το δ και στη συνέχεια το γ, παίρνοντας όμως περιορισμό για την διακρίνουσα της δευτεροβάθμιας.
Κώστας
Υπέθεσα ότι μιλάει για ακέραιους (κακώς ίσως).
Αν δεν μιλάει για ακέραιους, μπορούμε να πούμε και μια πιο απλή λύση.
Η πρώτη με την πρόσθεση, παραμένει αυτή που έδωσα (με την αφαίρεση της μονάδας δηλαδή).
Για τον πολλαπλασιασμό, ο ένας αριθμός θα 'ναι 1/α και ο άλλος, ο α^2 .
Φιλικά,
Στέλιος
Υσ: Αυτά όλα με την προϋπόθεση ότι οι αριθμοί δεν είανι οι ίδιοι (δηλαδή διαφορετικοί για την πρόσθεση και για τον πολ/σμο. Αν πρέπει να 'ναι ίδιοι, η λύση είναι αναγκαστικά αυτή που προτείνετε εσείς).
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Για την πρώτη περίπτωση, απλώς π.χ. ο ένας προσθεταίος θα μπορεί να 'ναι μικρότερος κατά μία μονάδα απ' τον αριθμό α που δίνεις ως εισαγωγή κι ο άλλος η ίδια η μονάδα.
Για τη δεύτερη περίπτωση, υπάρχει περίπτωση, αυτό που λες να μη γίνεται. ΔΗλαδή ο αριθμός να 'ναι πρώτος και να μην έχει διαιρέτες. Σε αυτή την περίπτωση, ή λες ότι π.χ. ο ένας πολ/στης είναι η μονάδα και ο άλλος ο ίδιος ο αριθμός (ή αντίστοιχα το -1 και ο αντίθετος του άλλου αριθμού), ή θα αναφέρεις ότι ο αριθμός είναι πρώτος. Σε περίπτωση που δεν είναι πρώτος, αρκεί να βρεις έναν διαιρέτη. Ο ένας πολ/στης είναι αυτός ο διαιρέτης κι ο άλλος ο αριθμός DIV τον διαιρέτη .
Φιλικά,
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Στε΄λιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
πολυ ωραια.παντα υπαρχει καλυτερος τροπος:iagree:
Οσον αφορα το α=1. δεν μπορω να καταλαβω ακομα γιατι ειναι σωστο...
αφου η επαναληψη θα γινει μονο μια φορα και το κ θα γινει 1.
Τι εννοείς ακριβώς;
Το 1 δε θεωρείται πρώτος αριθμός.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
πιστευω πως ο η επαναληψη που φτιαχνεις ειναι καπως ανορθοδοξη(και λαθος για α=1 οπως παρατηρησε και ο topic starter) και πως εχει περιθωρια βελτιωσης.
να τι προτινω:
πρωτος<-ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ αDIV2 !δεν εχει νοημα να κανουμε περιττες επαναληψεις
ΑΝ α MOD i = 0 ΤΟΤΕ
ΓΡΑΨΕ i
πρωτος<-ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πρωτος=ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Ο δοθεις αριθμος ειναι πρωτος.'
ΤΕΛΟΣ_ΑΝ
Δεν περίμενες να κάτσω να κάνω σοβαρό πρόγραμμα για έναν μαθητή 3ης γυμνασίου .
Για περισσότερες info για το συγκεκριμένο πρόβλημα, ανατρέξτε σε άλλο αντίστοιχο τόπικ που έχω δημιουργήσει περί πρώτων αριθμών και όπου προτείνω μία λύση με το θεώρημα Wilson .
Στέλιος
-----------------------------------------
πιστευω πως ο η επαναληψη που φτιαχνεις ειναι καπως ανορθοδοξη(και λαθος για α=1 οπως παρατηρησε και ο topic starter) και πως εχει περιθωρια βελτιωσης.
να τι προτινω:
πρωτος<-ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ αDIV2 !δεν εχει νοημα να κανουμε περιττες επαναληψεις
ΑΝ α MOD i = 0 ΤΟΤΕ
ΓΡΑΨΕ i
πρωτος<-ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πρωτος=ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Ο δοθεις αριθμος ειναι πρωτος.'
ΤΕΛΟΣ_ΑΝ
Γενικά κάθε αριθμός a γράφεται με μοναδικό τρόπο στη μορφή:
όπου με , πρώτος αριθμός.
Γενικά το πλήθος των διαιρετών ενός αριθμού δίνεται από τον τύπο:
Άρα μπορούμε να αποφύγουμε κι άλλες πράξεις απ' τη λύση που προτείνεις.
Επίσης, υπάρχει ο τύπος του Αρχιμήδη που περιορίζει ακόμη περισσότερο το range των αριθμών που θα σκανάρει ο βρόγχος για να βρει τους πιθανούς διαιρέτες, αλλά δεν έχει νόημα να τον γράψω, μιας και απευθύνεται το συγκεκριμένο τόπικ σε μαθητές λυκείου.
-----------------------------------------
πιστευω πως ο η επαναληψη που φτιαχνεις ειναι καπως ανορθοδοξη(και λαθος για α=1 οπως παρατηρησε και ο topic starter) και πως εχει περιθωρια βελτιωσης.
να τι προτινω:
πρωτος<-ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ αDIV2 !δεν εχει νοημα να κανουμε περιττες επαναληψεις
ΑΝ α MOD i = 0 ΤΟΤΕ
ΓΡΑΨΕ i
πρωτος<-ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πρωτος=ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Ο δοθεις αριθμος ειναι πρωτος.'
ΤΕΛΟΣ_ΑΝ
Για α=1 ΔΕΝ είναι λάθος (σύμφωνα με τη λύση που προτείνω). Το γιατί, βρες το μόνος σου
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
ΠΡΟΓΡΑΜΜΑ σπας_νεύρα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α,ι,κ
ΑΡΧΗ
κ<-0
ΓΡΑΨΕ 'Δώσε έναν αριθμό:'
ΔΙΑΒΑΣΕ α
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ α
ΑΝ α mod ι =0 ΤΟΤΕ
κ<-κ+1
ΑΝ ι<>1 ΤΟΤΕ
ΑΝ ι<>α ΤΟΤΕ
ΓΡΑΨΕ 'Διαιρέτης είναι ο:' , ι
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ κ=2 ΤΟΤΕ
ΓΡΑΨΕ 'Είναι πρώτος'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Βασικά και ο 1 και ο α είναι διαιρέτες.. αλλά σύμφωνα με την εκφώνηση υποτίθεται δε τους λαμβάνουμε υπόψη.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Κόσκινο του Ερατοσθένη;
Αλγόριθμο ή πρόγραμμα ζήτησα, όχι γενικολογίες
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Να γίνει αλγόριθμος ή πρόγραμμα που να εκτυπώνει τους πρώτους 50 πρώτους αριθμούς.
Στέλιος
Υσ: Όσο λιγότερες πράξεις/επαναλήψεις κάνει ο αλγόριθμος, τόσο το καλύτερο.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Πρόκειται για μια "κομμένη" εκδοχή της πρώτης φετινής άσκησης του Σταματόπουλου για το Πληροφορικής και Τηλ/νιών. Η πλήρης εκφώνηση:
https://cgi.di.uoa.gr/~ip/iphw0809_1.pdf
Μια άλλη σκέψη είναι να γίνει ξεχωριστός έλεγχος για το 4 και το 9 και μετά να ελέγχουμε μόνο τα τετράγωνα των αριθμών της μορφής 6κ+1 και 6κ+5 (αν και εδώ το πράγμα αρχίζει να γίνεται παρατραβηγμένο).
Επιπλέον, οι αριθμοί της original εκφώνησης που ελέγχονται είναι της μορφής χ^2+1 οπότε αν συνυπολογίσουμε κι αυτό και θέλουμε να το κάνουμε ακόμα πιο hardcore, μπορούμε να ξεκινήσουμε από το 5, να ελέγξουμε το τετράγωνό του, και μετά να ανεβαίνουμε με βήμα 4 (9, 13, 17,...). Οι πρώτοι που παραλείπει ο έλεγχος (7, 11,...) είναι αδιάφοροι, καθώς αποδεικνύεται ότι όλοι οι πρώτοι διαιρέτες των αριθμών χ^2+1, είναι της μορφής 4κ+1. Σε κάθε περίπτωση, η άσκηση μου φαίνεται τραβηγμένη απ' τα μαλλιά για επίπεδο Λυκείου.
Guess why στη μορφή ή ! Αποδεικνύεται (εύκολα σχετικά), πως κάθε πρώτος p έχει τη μορφή: ή . Αυτό είναι απόρροια ουσιαστικά της λύσης που λες.
Βέβαια, αν το τραβήξουμε λίγο ακόμη, μπορούμε να το δουλέψουμε το πρόβλημα και βάσει του θεωρήματος Wilson, που τότε ...γίνεται της Πόπης
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Διάβασε α
Όσο (α div 10) <> 0 Επανάλαβε
πλ <- πλ + 1
α <- α div 10
Τέλος_Επανάληψης
Εμφάνισε πλ
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
π.χ. έχεις 5,7
Αν γράψεις Α_Μ(5,7), είναι το 5 κλπ
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Διάβασε α
β<- α - Α_Μ(α)
Αν β>0,5 Τότε
Εμφάνισε Α_Μ(α)+1
Αλλιώς
Εμφάνισε Α_Μ(α)
Τέλος_αν
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Κανείς πια δεν κοιτά το τετράδιο ασκήσεων μαθητή; Είναι μέσα ο κώδικας.
Αν θυμάμαι καλά εκεί τον κάνει ταξινόμηση απευθείας και τον μπερδεύει τον μέσο μαθητή.
Εμείς ας κάνουμε συγχώνευση έτσι όπως πρότεινε ο Αποστόλης και στη συνέχεια straight exchange sorting στο νέο πίνακα !
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
Δηλαδή στην ουσία καταμετρά τα ψηφία κάθε αριθμού. Αυτή δεν είναι άλλωστε η λειτουργία της συνάρτησης; Να κάνουμε ένα υποπρογραμμάτακι που 'ναι φορητό και μπορούμε να το χρησιμοποιήσουμε σε περισσότερα από ένα προγράμματα. Αυτό που λες εσύ ναι μεν είναι σωστό, αλλά νομίζω είναι αρκετά ειδικό. Βέβαια, είναι πιο σύντομο.
Στέλιος
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mostel
Πολύ δραστήριο μέλος
ΠΡΟΓΡΑΜΜΑ sumofdigits
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: a
ΛΟΓΙΚΕΣ: f
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε έναν αριθμό:'
ΔΙΑΒΑΣΕ a
f <-- CHECK(a)
ΑΝ f=αληθής ΤΟΤΕ
ΓΡΑΨΕ 'Είναι διψήφιος'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δεν είναι διψήφιος'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ CHECK(num): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: num, stack
ΛΟΓΙΚΕΣ: logic
ΑΡΧΗ
logic <-- αληθής
stack <-- 0
ΟΣΟ num <> 0 ΕΠΑΝΑΛΑΒΕ
num <-- ( num DIV 10 )
stack <-- stack + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ stack <> 2 ΤΟΤΕ
logic <-- ψευδής
ΤΕΛΟΣ_ΑΝ
CHECK <-- logic
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.