#include #include int perfect( int value ); /* αρχέτυπο συνάρτησης */ int main(int argc, char *argv[]) { int number, max_number; /* βοηθητικές μεταβλητές */ if( argc!=2) //Έλεγχος αν έχει συμπληρωθεί o αριθμός { printf("Ξεχάσατε να γράψετε τον αριθμό "); printf("στη γραμμή εντολής. \n Ξαναδοκιμάστε. \n"); exit(0); } max_number=atoi(argv[1]); // εισαγόμενος αριθμός printf( "Εύρεση των πρώτων αριθμών μέχρι %d\n\n", max_number ); /* ανακύκλωση από το 2 έως το max_number */ for (number = 2; number <= max_number; number++ ) { /* εάν ο τρέχων αριθμός είναι πρώτος αριθμός */ if ( perfect( number ) ) { printf( "Ο αριθμός %d είναι πρώτος \n", number ); } } printf( "\n" ); system("PAUSE"); return 0; /* δηλώνει την επιτυχή ολοκλήρωση του προγράμματος */ } int perfect( int value ) { int factorSum = 1; /* απόδοση αρχικής τιμής */ int i; /* μετρητής ανακύκλωσης */ /* ανακύκλωση πιθανών τιμών παραγόντων */ for ( i = 2; i <= value / 2; i++ ) { /* αν ο i είναι παράγοντας */ if ( value % i == 0 ) { factorSum += i; /* πρόσθεση στο άθροισμα */ } } /* επιστέφει true (1) αν η μεταβλητή value ισού-ται με το άθροισμα των παραγόντων */ if ( factorSum == value ) { return 1; } else { return 0; } }