simplexsol
?>

Найдите все целые числа из промежутка от 300 до 600, у которых сумма делителей равна 50 . решить .

Информатика

Ответы

Anna Artem
Программа точно по условию:

Var A,d,S:integer;
Begin
Write('Искомые числа:');
For A:= 300 to 600 do
    Begin
    S:=A+1;
    d:=A div 2;
    While d>1 do
       Begin
       if A mod d = 0 then S:=S+d;
       d:=d-1
       End;
    if S = 50 then Write(' ',A);
    End
End.

Программа, разумеется, не выдаст ни одного числа, т.к. каждое число делится на себя и на единицу. То есть сумма делителей всегда будет больше 301.

Если не брать в расчёт само число и единицу, то программа будет выглядеть так:

Var A,d,S:integer;
Begin
Write('Искомые числа:');
For A:= 300 to 600 do
    Begin
    S:=0;
    d:=A div 2;
    While d>1 do
       Begin
       if A mod d = 0 then S:=S+d;
       d:=d-1
       End;
    if S = 50 then Write(' ',A);
    End
End.

Результат работы программы:

Искомые числа: 301 481 589
lavr74
Объект в программировании — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов) [1]. Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины «экземпляр класса» и «объект» взаимозаменяемы. [2]

Объект, наряду с понятием класс, является важным понятием объектно-ориентированного подхода. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма [1].
Anna Artem
/*
C++ compiler
gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
Copyright (C) 2015 Free Software Foundation, Inc.
*/

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int count = 0;
    cout <<"Введите количество призывников: ";
    cin >>count;
    if (count>17) count=17;
    vector<int> tanks(count);
    for (unsigned i=0; i<tanks.size(); i++) cin >>tanks[i];
    int min=300, max=0;
    for (unsigned i=0; i<tanks.size(); i++)
    {
        if (min>tanks[i]) min=tanks[i];
        if (max<tanks[i]) max=tanks[i];
    }
    int cnt=0;
    for (unsigned i=0; i<tanks.size(); i++)
    {
        if ((tanks[i]!=min) and (tanks[i]!=max)) cnt++;
    }

    cout <<cnt <<endl;
}

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Найдите все целые числа из промежутка от 300 до 600, у которых сумма делителей равна 50 . решить .
Ваше имя (никнейм)*
Email*
Комментарий*