// Проверява дали едно число е просто #include #include using namespace std; void isPrime(unsigned n) { bool prime = true; for( int i =2; i< sqrt( ( float) n); i++) // функцията sqrt е дефинирана да приема за параметър число с плаваща запетая, затова трябва явно // да преобразуваме ("cast"-нем) n до тип float или double // също така за да избегнем и библиотеката , както и преобразуането // може за условие на цикъла for да използваме i*i < n , което е еквивалентно prime = prime && n%i!=0; cout<<"Chisloto "< 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, ,110 1+2+4+5+10+11+20+22+44+55+110= 284 делители на 284 => 1, 2, 4, 71, 142 1+2+4+71+142= 220 */ void amicableNumbers(int n) { for ( int i=1 ; i<=n; i++) { int sumOfI =0; // чрез i обхождаме всички числа, в интервала [1;n] // sumOfI ще е сумата от делителите на i int sumOfSum=0; // ако едно число х е потенциално за двойка приятелски числа, нека сумата от неговите делители е s // тогава като намерим сумата от делителите на s, трябва да получим x // sumOfSum ще е сумата от делителите на числото, което е сума от делители на i for(int j =1; j < i ; j++) if( i%j == 0 ) sumOfI += j; //тук намираме сумата от делителите на i for( int j=1 ; j< sumOfI ; j++) if ( sumOfI% j==0) sumOfSum+= j; // тук намираме сумата от делителите на сумата от делителите на i if( i== sumOfSum ) // ако чрез това двойно сумиране на делители сме се върнали в i, то i и сумата от делителите на i ( т.е. sumOfI) // образуват двойка приятелски числа cout<< "("<< i<< ","<