Ранее давался код на Паскале для нахождения всех простых чисел от 1 до n, но этот код написан на C++ и гораздо быстрее работает. Суть самой программы:
Говорят, что целое число является совершенным, если его делители, включая 1 (но не само число) в сумме дают это число. Например, 6 — совершенное число, так как 6 = 1 + 2 + 3. Требуется написать функцию perfect, которая определяет, является ли ее параметр number совершенным числом. Затем использовать эту функцию в программе, которая определяет и печатает все совершенные числа в диапазоне от 1 до 1000. Напечатать сомножители каждого совершенного числа, чтобы убедиться, что число, действительно, совершенное.
include <iostream> using namespace std; bool perfect(int num){ int sum=0; for(int i=1;i<=num/2;i++) if(num%i==0) sum+=i; if(sum==num) return 1; return 0; } void main(){ setlocale(LC_ALL,"Russian"); for(int i=1;i<=1000;i++) if(perfect(i)){ cout<<i<<", сомножители:"; for(int j=1;j<=i/2;j++){//печатаем сомножители if(i%j==0) cout<<" "<
Еще вариант:
#include "stdafx.h" #include <iostream> int sumd (int a) { //сумма делителей числа a int sum=0; for (int i=1; i<a/2+1; i++) if (a%i==0) sum+=i; return sum; } bool perfect (int a) { if (sumd(a)==a) return true; return false; } void printd (int a) { for (int i=2; i<a/2+1; i++) if (a%i==0) std::cout << "+"<<i; } int main () { for (int i=2; i<=1000; i++) if (perfect(i)) { std::cout<<i<<": "; std::cout << "1"; printd(i); std::cout << "\n"; } return 0; }
Comments ( 0 )