Δημοσιεύτηκε: 18 Ιούλ 2011, 20:53
έγραψε:Η ΦΙΛΙΑ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ
Οι φίλοι αριθμοί
Το πρόβλημα των τέλειων αριθμών : Ένας αριθμός ονομάζεται τέλειος αν
είναι ίσος με το άθροισμα των γνησίων διαιρετών του. Για παράδειγμα το 6 και το 28:
6=1 +2+3, 28=1+2+4+7+14. Όλοι οι τέλειοι αριθμοί που είναι γνωστοί σήμερα είναι
άρτιοι. Είναι ανοικτό πρόβλημα αν υπάρχουν περιττοί (μονοί) τέλειοι αριθμοί.
Ακόμη, είναι ανοικτό το αν υπάρχουν άπειροι τέλειοι αριθμοί. Με δεδομένο ότι τα
προβλήματα των τέλειων αριθμών αποδίδονται στους Πυθαγορείους, είναι τα
παλαιότερα ανοικτά ακόμα προβλήματα στα μαθηματικά.
Πάλι στους Πυθαγόρειους οφείλονται και οι φίλοι αριθμοί. ∆υο αριθμοί
λέγονται φίλοι αν ο καθένας ισούται με το άθροισμα των γνήσιων διαιρετών του
άλλου. Για παράδειγμα το 220 και το 284.
284=1+2+4+5+10+11+20+22+44+55+110 (όλοι οι διαιρέτες του 220).
220=1+2+4+71+142 (όλοι οι διαιρέτες του 284).
∆εν γνωρίζουμε σήμερα αν τα ζευγάρια των φίλων αριθμών είναι άπειρα ή
πεπερασμένα.
* Ο Pierre Fermat το 1636 βρήκε το ζεύγος 17 296, 18416
* Ο Renè Descartes βρήκε ένα τρίτο ζεύγος, 9 363 584, 9 437 056
* Ο Nicolò Paganini, το 1866 βρήκε το 1 184, 1 210
Υπάρχουν περίπου 12000 ζευγάρια από φίλους αριθμούς.
Πάνω σε αυτό έπεσα σε ένα βιβλίο που διαβάζω τελυταία και λέγεται "Το θεώρημα του παπαγάλου". Δε γνώριζα την παραπάνω ιδιότητα και θέλησα να τη μετατρέψω σε ένα ατοματισμό σε C.
Ο παρακάτω κώδικας σου ζητά να δώσεις ένα αριθμό ώστε να δει εάν έχει φίλο. Δεν είναι κάτι δύσκολο, τον παραθέτω και θα ήταν ωραίο να τον τροποποιήσουμε ώστε να βρούμε όλα τα ζευγάρια-αν δεν απαιτεί μεγάλη υπολογιστική ισχή και μνήμη .
Αν ναι, μπορούμε να σπάσουμε τα πεδία αναζήτησης.
Ίσως να υπάρχει κάπου στο διαδίκτυο και άλλος κώδικας που να βρίσκει και τα ζευγάρια-
- Κώδικας: Επιλογή όλων
/* Αυτό προγραμματάκι βρίσκει εάν ένας αριθμός έχει φίλο */
#include <stdio.h>
int div_sum(int a){
int k=0;
int z=0;
int b=0;
for(k=1;k<=a/2;k++){
if((a%k)==0){
b=b+k;}
}
printf("Το άθροισμά των διαιρέτων του %d είναι %d \n" ,a,b );
return b;
}
main(){
int i=0;
int j=0;
printf ("Δώσε ένα αριθμό,για να βρούμε αν έχει φίλο, και πατήστε enter :\n");
scanf ("%d",&i);
j=div_sum(i);
if(div_sum(j)==i) printf ("Άρα αριθμοί %d και %d είναι φίλοι.\n ", i,j );
else
printf("Ο αριθμός %d δεν έχει φίλο.\n" , i);
/* GNU v2 */
}