Γενικό Λύκειο > Δομή επανάληψης

Δύσκολες Ασκήσεις στις Δομές Επανάληψης

<< < (18/18)

gpapargi:
Ε ναι, αφού κάνεις το ένα κάνεις και το άλλο. Το βασικό σημείο είναι ότι δεν ψάχνεις τους πρώτους για να κάνεις διαιρέσεις. Κάνεις διαιρέσεις με όλους τους ακεραίου διαδοχικά. Αλλά οι σύνθετοι δε θα πετύχουν τέλεια διαίρεση γιατί ότι πρώτο παράγοντα περιέχουν έχει ήδη απορροφήσει όλες τις διαιρέσεις που θα μπορούσε να κάνει ο σύνθετος. 

nikolasmer:

--- Παράθεση από: gpapargi στις 05 Οκτ 2018, 10:42:57 πμ ---Ε ναι, αφού κάνεις το ένα κάνεις και το άλλο. Το βασικό σημείο είναι ότι δεν ψάχνεις τους πρώτους για να κάνεις διαιρέσεις. Κάνεις διαιρέσεις με όλους τους ακεραίου διαδοχικά. Αλλά οι σύνθετοι δε θα πετύχουν τέλεια διαίρεση γιατί ότι πρώτο παράγοντα περιέχουν έχει ήδη απορροφήσει όλες τις διαιρέσεις που θα μπορούσε να κάνει ο σύνθετος. 

--- Τέλος παράθεσης ---
Θα το προσπαθήσω.
Σας ευχαριστώ .

Κανένας:
Μια εκδοχή σε Γλωσσομάθεια:

ΠΡΟΓΡΑΜΜΑ Ανάλυση_σε_γινόμενο_πρώτων_παραγόντων
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: n,i,m
ΑΡΧΗ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΓΡΑΨΕ 'Δώσε φυσικό αριθμό'
   ΔΙΑΒΑΣΕ n
  ΜΕΧΡΙΣ_ΟΤΟΥ n>0 KAI A_Μ(n)=n
  ΓΡΑΨΕ_ n,'=',1
  i <-- 1
  ΟΣΟ n<>1 ΕΠΑΝΑΛΑΒΕ
    i <-- i+1
    m <-- 0
    ΟΣΟ n mod i=0 ΕΠΑΝΑΛΑΒΕ
      m <-- m+1
      n <-- n div i
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ m>0  ΤΟΤΕ
      ΓΡΑΨΕ_ 'x',i,'^',m
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Σάκης Δημόπουλος:
https://www.youtube.com/watch?v=5LlHaoqBfbk&t=

dski:

--- Παράθεση από: sakisnemkav στις 26 Σεπ 2019, 10:33:53 πμ ---https://www.youtube.com/watch?v=5LlHaoqBfbk&t=

--- Τέλος παράθεσης ---

Μπράβο για την προσπάθεια. Το βίντεο είναι κατατοπιστικό. Μια παρατήρηση όμως για την περίπτωση των αρνητικών αριθμών: Ωραία ιδέα να καλύψεις και αυτή την περίπτωση, όμως, νομίζω, ότι, όταν όλη η ιδέα του αλγορίθμου είναι να δείξει ότι ο πολλαπλασιασμός γίνεται με πρόσθεση, ολίσθηση και σύγκριση, το να εμφανίσεις μέσα στον αλγόριθμο το γινόμενο Α*Β (έστω και μετά τον υπολογισμό της απόλυτης τιμής του αποτελέσματος) είναι σαν να καταργείς όλη την ιδέα. Υποτίθεται ότι αυτό θέλουμε να αποφύγουμε. Πιθανώς μάλιστα αυτό να μπερδέψει τους μαθητές που μπορεί εύλογα να ρωτήσουν αφού έχουμε έτσι κι αλλιώς το Α*Β μέσα στον αλγόριθμο γιατί να χρησιμοποιήσουμε τον πολλαπλασιασμό αλά ρωσικά για να το υπολογίσουμε;

Εφόσον έχεις ήδη πει ότι ο Η/Υ εκτελεί συγκρίσεις, μια ιδέα, αντί του Α*Β, θα ήταν εδώ να χρησιμοποιηθεί μια σύνθετη λογική συνθήκη στο στυλ: Α>0 και Β>0 ή Α<0 και Β<0 (δεν μου έρχεται κάτι πιο έξυπνο που να μην απαιτεί πολλαπλασιασμό ή κλασσική διαίρεση).

Με κίνδυνο να φανώ "σπαστικός" θα έλεγα να αποφύγεις ακόμη και το -1 * S και να γράψεις απλά -S ώστε να μην υπάρχει πουθενά στον αλγόριθμο η πράξη του πολλαπλασιασμού την οποία υποτίθεται ότι υλοποιεί ο αλγόριθμος (ΟΚ, δεν είμαι σίγουρος πως θα υλοποιούνταν το -S στην πράξη αλλά ο αντίθετος ενός ακεραίου μπορεί να βρεθεί χωρίς πολλαπλασιασμό με χρήση του συμπληρώματος ως προς 2 για να απαντήσω σε πιθανή ερώτηση μαθητή πως θα υπολογίσω τον αντίθετο χωρίς πολλαπλασιασμό. Ψιλά γράμματα μάλλον αλλά κουβέντα να γίνεται... :-) )

Πλοήγηση

[0] Λίστα μηνυμάτων

[*] Προηγούμενη σελίδα

Μετάβαση στην πλήρη έκδοση