profile
Опубликовано 5 лет назад по предмету Информатика от mravgor70

На ввод подается одно число. Найдите сумму всех его простых делителей.
Входные данные
Одно целое положительное число, не превышающее 10 в степени 6 и большее, чем один.
Выходные данные
Выведите сумму простых делителей этого числа.
ПРИМЕРЫ
ВВОД
6
ВЫВОД
5

  1. Ответ
    Ответ дан LikeSmileLJkee
    Delphi / Pascal
    function mySimpleDigit(a: integer):boolean;
    var i: integer;
    begin
    for i:=sqrt(a) downto 1 do
    if not (a mod i = 0) then mySimpleDigit:=false else mySimpleDigit:=true;
    end;
    var i,n,s: integer;
    begin
    write('Введите число: ');
    readln(n);
    if ((n>1) and (n<1000000)) then
    begin
    s:=0;
    for i:=2 to n-1 do
    if ((n mod i = 0) and (mySimpleDigit(i) = true)) then s:=s+i;
    end;
    writeln('Сумма всех простых делителей: ', s);
    readln;
    end.

    C++
    #include <cmath>
    #include <iostream>
    using namespace std;
    bool mySimpleDigit(unsigned a) {
    for (unsigned i =sqrt(a); i > 1; i--)
    if (!(a % i)) return false;
    return true;
    }
    int main() {
    unsigned n,s;
    cin >> n;
    if ((n>1) && (n<1000000)) {
    s=0;
    for (unsigned i=2; i<=n; i++)
    if ((n%i==0) && (mySimpleDigit(i)==true)) s+=i;
    cout << "Summa vsex prostix deliteley: " << s;
    } else cout << "Vvedite drugoe chislo";
    return 0;
    }
    1. Ответ
      Ответ дан mravgor70
      Всее работает:) Спасибо огромное за помощь.
    2. Ответ
      Ответ дан LikeSmileLJkee
      Извините, что пришлось так повозиться. Спасибо Вам за терпение
    3. Ответ
      Ответ дан mravgor70
      Все хорошо
    4. Ответ
      Ответ дан srzontmp
      При вводе N = 69984, сумма простых делителей 136655,
      хотя, для этого числа всего 2 простых делителя - 2 и 3 69984 = 2^5 * 3^9, все остальные делители - составные числа.
    5. Ответ
      Ответ дан LikeSmileLJkee
      Склоняйтесь к варианту в C++, Delphi/Pascal - нерабочий и удалить уже не могу, т.к. помечено как ответ