Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά, καλημέρα !

Το μήνυμα αυτό το είδα μόλις τώρα, γιατί είχα πολύ καιρό να μπω στο insomnia. Έτσι σκάρωσα λίγο κώδικα στα γρήγορα. Προφανώς και δεν ξέρω άμα αυτή είναι η βέλτιστη υλοποίηση.
Έγραψα το κατηγόρημα πρώτος(Χ) που απλά ελέγχει αν ένας δεδομένος ακέραιος Χ είναι πρώτος.
Χρησιμοποιώ ως βοηθητικό κατηγόρημα, την έκφραση 'διαιρείται(Χ,Υ)' η οποία αληθεύει αν ο Υ είναι διαιρέτης του Χ.
Οι γνώσεις μου στην Prolog και στο δηλωτικό προγραμματισμό γενικότερα δεν είναι πάρα πολλές και γι' αυτό σας παρακαλώ βελτιώστε τον αλγόριθμο αν μπορείτε. Πάντως σε όσες δοκιμές έκανα, τα αποτελέσματα τα βγάζει σωστά.

diaireitai(X,Y) :- Y < X, 0 is X mod Y, !.
protos(1) :- !.
protos(2) :- !.
protos(3) :- !.
protos(5) :- !.
protos(Q) :- 0 is Q mod 2, fail.
protos(Q) :- Q1 is Q-1,
             forall(between(3,Q1,X), not(diaireitai(Q,X))).  

Καλό Πάσχα με υγεία,

Ο Άσπρος Γάτος

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...