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

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




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 3 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
ΔημοσίευσηΔημοσιεύτηκε: Τετ 04 Νοέμ 2009 09:42 pm 
Χωρίς σύνδεση

Εγγραφή: Τετ 04 Νοέμ 2009 09:27 pm
Δημοσιεύσεις: 1
Γειά σας !!! :)
Μπορεί κάποιος να με βοηθήσει στην επίλυση ενός αλγορίθμου ??
Θα εκτιμούσα πολύ την βοηθειά σας !!! Σας ευχαριστώ εκ των προτέρων!

Ζητείται αλγόριθμος σε ΓΛΩΣΣΑ ο οποίος να διαβάζει 1000 θετικους ακέραιους αριθμούς και να εμφανίζει πιοι από αύτους τους αριθμούς είναι πλήρης δυνάμεων. Πλήρης δυνάμεων(ΠΔ) ονομαζετε ένας αριθμός όταν αναλύοντας τον σε γινόμενο δυνάμεων πρώτων παράγοντων ο εκθέτης είναι μεγαλύτερος του 1. Για παράδειγμα το 9000 είναι ΠΔ αριθμός αφού 9000 = 2^2 * 3^2 * 5^3 ενώ το 279 ΔΕΝ είναι διότι 279=3^2 * 31.


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Πέμ 12 Νοέμ 2009 10:34 pm 
Χωρίς σύνδεση

Εγγραφή: Παρ 11 Σεπ 2009 05:31 pm
Δημοσιεύσεις: 4
Καταρχάς πρόγραμμα που να διαβάζει 1000 αριθμούς είναι λίγο χρονοβόρο για να γίνει.
Δηλαδή θα πρέπει να γράφεις:
ΔΙΑΒΑΣΕ αριθμό1
ΔΙΑΒΑΣΕ αριθμό2
....
....
....
ΔΙΑΒΑΣΕ αριθμό1000

Με αυτό τον τρόπο θα σου χρειαστούν 1000 σειρές μέσα στον κώδικα και μετά στην εκτέλεση αλλες 1000 εισαγωγές αριθμών. Μήπως εννοείς κάτι άλλο; Τώρα όσον αφορά
τα υπόλοιπα θέλει λίγο ψάξιμο. Θα το προσπαθήσω και αν βρω κάτι θα ενημερώσω. :?


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Παρ 13 Νοέμ 2009 05:25 pm 
Χωρίς σύνδεση

Εγγραφή: Παρ 30 Μάιος 2008 09:46 pm
Δημοσιεύσεις: 49
johnkop έγραψε:
Καταρχάς πρόγραμμα που να διαβάζει 1000 αριθμούς είναι λίγο χρονοβόρο για να γίνει.
Δηλαδή θα πρέπει να γράφεις:
ΔΙΑΒΑΣΕ αριθμό1
ΔΙΑΒΑΣΕ αριθμό2
....
....
....
ΔΙΑΒΑΣΕ αριθμό1000

Με αυτό τον τρόπο θα σου χρειαστούν 1000 σειρές μέσα στον κώδικα και μετά στην εκτέλεση αλλες 1000 εισαγωγές αριθμών.

Καταρχήν για να γίνει αυτό το πρόγραμμα δεν χρειάζονται 1000 γραμμές για την εισαγωγή (μέσα στον κώδικα) ( αλλά όντως θα είναι κουραστικό να γράφεις 1000 αριθμού για την εισαγωγή :? )… το πολύ 11 ( γραμμές ) και αν θέλει κάποιος μπορεί να το φτιάξει και με αρκετά λιγότερες …
Για κάθε αριθμό πρέπει να βγάζει εις πέρας κάποια πράγματα για να πει αν είναι ή όχι αριθμός πλήρης δυνάμεων, τα οποία θα μπουν μέσα σε μια ΓΙΑ για να γίνονται για κάθε αριθμό. Πρώτα θα μετράει το πόσες φορές μπορεί να διαιρέσει (την 1 μετά την άλλη) τον αριθμό, δηλαδή θα βρίσκει τον εκθέτη. Όταν πια το πηλίκο της διαίρεσης δεν διαιρείται ξανά με τον ίδιο αριθμό θα πρέπει να ελέγχει αν ο εκθέτης που βρήκε είναι μικρότερος ή ίσος του 1 ( όπως είπες στον ορισμό ) . αν το παραπάνω είναι αληθές τότε πρέπει να σταματάει την επανάληψη για τον έλεγχο του αριθμού και να συνεχίζει στον επόμενο αριθμό γιατί αυτός δεν είναι , αλλιώς πρέπει να ψάχνει για τον επόμενο πρώτο και να επαναλαμβάνει τα προηγούμενα μέχρι το πηλίκο να είναι 1 ή να έχει τερματίσει την επανάληψη επειδή βρήκε κάποιον εκθέτη <= 1.

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

  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν            !---Για κάθε αριθμό
    ΜΕΤΡ <-- 0
    ΠΗΛΙΚΟ <-- ΑΡΙΘΜΟΣ[Ι]
    Κ <-- 2
    ΔΕ <-- ΨΕΥΔΗΣ
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΑΝ ΠΗΛΙΚΟ MOD Κ = 0 ΤΟΤΕ
        ΠΗΛΙΚΟ <-- ΠΗΛΙΚΟ DIV Κ
        ΜΕΤΡ <-- ΜΕΤΡ + 1
      ΑΛΛΙΩΣ
        ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
          Κ <-- Κ + 1
        ΜΕΧΡΙΣ_ΟΤΟΥ ΠΡΩΤΟΣ(Κ)
        ΑΝ ΜΕΤΡ <= 1 ΤΟΤΕ
          ΠΗΛΙΚΟ <-- 1
          ΔΕ <-- ΑΛΗΘΗΣ
        ΤΕΛΟΣ_ΑΝ
        ΜΕΤΡ <-- 0
      ΤΕΛΟΣ_ΑΝ                                                                  
    ΜΕΧΡΙΣ_ΟΤΟΥ ΠΗΛΙΚΟ = 1
    ΑΝ ΟΧΙ ΔΕ ΤΟΤΕ
      ΓΡΑΨΕ 'Ο ', ΑΡΙΘΜΟΣ[Ι], ' είναι αριθμός πλήρης δυνάμεων.'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΠΡΩΤΟΣ(ΑΡΙΘΜΟΣ) :ΛΟΓΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ι, ΑΡΙΘΜΟΣ
  ΛΟΓΙΚΕΣ: Α
ΑΡΧΗ
  Α <-- ΑΛΗΘΗΣ
  ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ Α_Μ(ΑΡΙΘΜΟΣ/2)+1
    ΑΝ ΑΡΙΘΜΟΣ MOD Ι = 0 ΚΑΙ Ι <> ΑΡΙΘΜΟΣ ΤΟΤΕ
      Α <-- ΨΕΥΔΗΣ
      Ι <-- Α_Μ(ΑΡΙΘΜΟΣ/2)+1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΠΡΩΤΟΣ <-- Α
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 


ΥΓ. πάντως στο google που έψαξα για τους powerful numbers ήταν αρκετά διαφορετικός ο ορισμός που βρήκα.

ΥΓ2. Αν είναι αποδεχτό και να μην υπάρχει κάποιος πρώτος ως παράγοντας δηλαδή να έχει p^0 (=1) πρέπει να αλλάξει η γραμμή 34
Syntax: [ Download ] [ Hide ]
  ΑΝ ΜΕΤΡ <= 1 ΤΟΤΕ
σε
Syntax: [ Download ] [ Hide ]
  ΑΝ ΜΕΤΡ = 1 ΤΟΤΕ

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


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

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


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

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


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

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