Как найти сумму делителей числа паскаль

0 / 0 / 0

Регистрация: 16.05.2010

Сообщений: 6

1

Найти сумму делителей числа.

10.12.2010, 23:10. Показов 12826. Ответов 5


Студворк — интернет-сервис помощи студентам

Ребят, помогите. Задача звучит так. Найти сумму делителей числа.

ПО суте простейшая задача. я её написал но загвоздка в том что из 20 тестов проходит только 5. Дальше идут огромные числа. Подскажите подпрограммы длинного деления и сложения.
Заранее спасибо



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

11.12.2010, 12:23

2

Цитата
Сообщение от AsusP750
Посмотреть сообщение

Подскажите подпрограммы длинного деления и сложения.

Ишь чего захотел…
Деление вчера выкладывал здесь.
https://www.cyberforum.ru/pascal/thread207939.html
Ну а уж сложение, уважаемый олимпионик, сам давай пиши, нефиг на чужом горбу в рай ехать…



0



VampirSS

19 / 19 / 15

Регистрация: 08.12.2010

Сообщений: 34

11.12.2010, 12:35

3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses crt;
var i, n:longint;
     s:real;
begin
clrscr;
writeln('vvedite chislo:');
readln(n);
s:=0;
for i:=1 to n do
   if (n mod i)=0 then s:=s+i;
writeln('S = ',s:0:0);
readln
end.



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

11.12.2010, 12:40

4

VampirSS, Думаю это наш олипионик знает, ему нужно найти делители чисел типа
12345678891234567891234567912345679912355



0



19 / 19 / 15

Регистрация: 08.12.2010

Сообщений: 34

11.12.2010, 12:49

5

Puporev, я это понял уже когда ответ запостил



0



0 / 0 / 0

Регистрация: 16.05.2010

Сообщений: 6

11.12.2010, 18:25

 [ТС]

6

Да я олимпиадник, но олимпиаду я уже написал 4 декабря а щас хочу понять как правильно решать



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

11.12.2010, 18:25

Помогаю со студенческими работами здесь

Найти сумму четных делителей натурального числа
1) Дано натуральное число ( вводить самому):
— найти вторую ( с начала) цифру данного числа;
-…

Найти сумму элементов, у которых сумма делителей меньше данного числа Х
Дан одномерный массив, который содержит не более 50 целых чисел. Найти сумму элементов, у которых…

Найти сумму элементов матрицы, у которых сумма делителей меньше данного числа Х
Дана прямоугольная таблица, которая содержит не более 10 строк и не более 10 столбцов. Найти сумму…

Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа N.
Помогите решить эту задачу с процедурами, пожалуйста))
Заданы два целых числа М, N. Определить,…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

Пример программы паскаль, которая находит все делители натурального числа и их сумму

Пример программы паскаль, которая находит все делители натурального числа и их сумму

Итак, продолжаю выкладывать наиболее востребованные исходники Паскаль ABC по теме циклы паскаль (FOR). Задача Pascal такая: Дано натуральное число. Найти все его делители и их сумму. Число вводится с клавиатуры, делители выводятся через пробелы, сумма в следующей строке. Допустим диалог с пользователем.

Исходный код программы:

Var n, i, sum: integer;  //Описание переменных
Begin                    //Начло программы
writeln ('Введите число'); //Диалог с пользователем
readln(n);                  //Считывание числа
sum := n;                   //Присваивание сумме значение самого числа (само число - уже делитель самого себя)
writeln('Делители числа:');   //Диалог с пользователем
for i := 1 to n div 2 do      //Цикл For от до половины n
  if (n mod i) = 0 then begin  //Если число делится на i, то выводим
    write(i,'  ');
    sum := sum + i;            //К значению суммы прибавляем делитель
  end;                         //Конец условного оператора if
writeln(n); //Вывод самого числа, т.к. оно тоже делитель
writeln('Сумма делителей: ',sum);  //Вывод суммы делителей
End.                               //Конец программы

Дата: 2013-06-25 10:53:19   Просмотров: 48722

Теги: Паскаль Pascal исходник исходники скачать FOR циклы

Узнай цену своей работы

Формулировка задачи:

5. Найти сумму всех делителей числа.

Код к задаче: «Найти сумму всех делителей числа.»

textual

Листинг программы

var n:integer;//число
     s:integer;//сумма
     i:integer;//возможные делители
...........................
s:=0;
for i:=1 to n do
if n mod i=0 then s:=s+i;

Полезно ли:

14   голосов , оценка 4.214 из 5

Похожие ответы

  1. Найти количество простых делителей числа
  2. Найти сумму положительных элементов массива
  3. Получить сумму всех членов последовательности
  4. Найти сумму положительных чисел последовательности
  5. Найти все трехзначные числа, сумма цифр которых равна данному целому числу
  6. Найти все натуральные числа из промежутка от 1 до 200, У которых сумма цифр равна S
  7. Найти сумму всех четных элементов массива А, имеющих четные индексы
  8. Найти сумму четных цифр числа на нечетных местах
  9. Найти сумму цифр введенного с клавиатуры натурального числа
  10. Дано число n. Найдите такой его делитель d
  11. Найти количество цифр, равных 0, в заданном натуральном числе

Введение.

Итак, я продолжаю решать самые популярные и самые распространенные задачи на языке программирования PascalABC с использованием циклов FOR, на этот раз это задача на нахождение делителей числа и их суммы.

Задача.

Дано
натуральное число X, наша задача — найти его делители и их сумму SUMMA. Число X считывается с клавиатуры, делители выводятся на экран через знак пробела, а их сумма SUMMA располагается в следующей строке. Решим поставленную перед нами задачу с использованием цикла FOR, добавляя к каждой строке необходимые пояснения для абсолютного понимания алгоритма.

Код.

Var n, i, sum: integer; //Описание переменных
Begin //Начло программы
writeln (‘Введите число’); //Диалог с пользователем
readln(n); //Считывание числа
sum := n; //Присваивание сумме значение самого числа (само число — уже делитель самого себя)
writeln(‘Делители числа:’); //Диалог с пользователем
for i := 1 to n div 2 do //Цикл For от до половины n
if (n mod i) = 0 then begin //Если число делится на i, то выводим
write(i,’ ‘);
sum := sum + i; //К значению суммы прибавляем делитель
end; //Конец условного оператора if
writeln(n); //Вывод самого числа, т.к. оно тоже делитель
writeln(‘Сумма делителей: ‘,sum); //Вывод суммы делителей
End. //Конец программы

Раздел:
Задачи /
Простейшие /

Найти сумму делителей натурального числа

Основы программирования 2.0

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать.
Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь.
Подробнее…

Условие задачи 2.16

Задача 2.16
Дано натуральное число N. Вывести на экран сумму его делителей. Число 1 считается делителем любого натурального числа. Число N не является делителем числа N.

Эту задачу довольно часто задают в контрольных и прочих студенческих делах. Задача несложная. Однако на её примере начинающие могут кое-чему научиться.

Алгоритм решения довольно простой:

  1. Перебираем в цикле все возможные целые числа от 1 до числа N.
  2. Каждый раз пытаемся делить число N на текущее число. Если оно делится без остатка, то текущее число является делителем числа N. Прибавляем его к итоговой сумме.

Разумеется, сначала подготавливаем необходимые переменные.

Ну а чтобы задачка была поинтереснее, предлагаю дополнительно сделать так, чтобы на экран была выведена не только итоговая сумма делителей числа N, но и сами делители.

Решения на Паскале и С++ представлены ниже. Если кто забыл, что такое натуральное
число, то см. здесь.

Краткое описание программы:

  1. Обнуляем переменную Sum, в которой у нас будет итоговая сумма делителей.
  2. Получаем случайное значение и записываем его в переменную N.
  3. Затем запускаем цикл от 1 до N и в каждой итерации цикла вызываем нашу функцию ThisDivider(N, i), которая возвращает TRUE, если число i является делителем числа N. Саму функцию описывать не буду, потому что она достаточно простая.
  4. Если число i является делителем числа N, то к переменной Sum мы прибавляем число i, а к строке Str присоединяем строковое представление числа i, предварительно преобразовав это число в строку. Так мы получаем строку, которая содержит все делители числа N.
  5. Ну и в конце выводим всё на экран.

Обратите внимание, что для использования функции преобразования числа в строку в Паскале надо подключить модуль SysUtils, а в С++ — .

Также обратите внимание на то, как мы преобразуем число в строку на С++. Делается это довольно замысловато. И это ещё не самый сложный способ. В Паскале же всё просто и интуитивно понятно. Ну а в С++, как всегда, всё через зад.

Правда, начиная со стандарта С++ 2011 года (вроде с него), появилась более понятная и приятная функция to_string(). Но плохая новость заключается в том, что далеко не все средства разработки (особенно бесплатные) поддерживают этот стандарт. Поэтому я не стал использовать эту функцию в своей программе.

Решение задачи 2.16 на Паскале

program t216;

uses SysUtils;                 //Подключить этот модуль

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
var
  i   : WORD;                  //Индекс
  N   : WORD;                  //Число
  Sum : DWORD = 0;             //Сумма
  Str : string = '';           //Строка для делителей

//****************************************************************
// ФУНКЦИИ И ПРОЦЕДУРЫ
//****************************************************************

//****************************************************************
// Функция принимает число и возможный делитель.
// ВХОД:  Num - число
//        Del - возможный делитель
// ВЫХОД: TRUE - если Del является делителем числа Num
//****************************************************************
function ThisDivider(Num, Del : WORD) : boolean;
begin
  if Del = Num then
    begin
      Result := FALSE;
      Exit;
    end;
  Result := (Num mod Del) = 0;
end;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Randomize;               //Запустить генерацию случайных чисел
  N := Random(High(N));    //Получить случайное число

  WriteLn('N = ', N);

  for i := 1 to N do       //В цикле проверить возможные делители
    begin
      if ThisDivider(N, i) then  //Если это делитель, то
        begin
          Sum := Sum + i;        //прибавить его к сумме
          Str := Str + IntToStr(i) + ' ';
        end;
    end;

  //Вывести на экран
  WriteLn('Dividers : ', Str);
  WriteLn('Sum of the divisors = ', Sum);

  WriteLn('The end. Press ENTER...');
  ReadLn;
end.     

Решение задачи 2.16 на С++

#include <cstdlib>
#include <iostream>
#include <sstream>                    //Подключить этот файл

using namespace std;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
unsigned short int N;                  //Число
unsigned long int  Sum = 0;            //Сумма
ostringstream      Str;                //Строка для делителей 

//****************************************************************
// ФУНКЦИИ И ПРОЦЕДУРЫ
//****************************************************************

//****************************************************************
// Функция принимает число и возможный делитель.
// ВХОД:  Num - число
//        Del - возможный делитель
// ВЫХОД: TRUE - если Del является делителем числа Num
//****************************************************************
bool ThisDivider(unsigned short int Num, unsigned short int Del)
{
  if (Del == Num) return(false);
  return(0 == (Num % Del));
}     

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
int main(int argc, char *argv[])
{
  srand(time(0));            //Запустить генерацию случайных чисел
  N = rand() % USHRT_MAX;    //Получить случайное число
  
  Str.clear();
  
  cout << "N = " << N << endl;
  for(int i = 1; i <= N; i++)
  {
    if (ThisDivider(N, i))
    {      
      Str << i << ' ';
      Sum = Sum + i;
    }
  }
  
  //Вывести на экран
  cout << "Dividers : " << Str.str() << endl;
  cout << "Sum of the divisors = " << Sum << endl;     
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

Найти сумму делителей натурального числа

Как стать программистом 2.0

Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки…
Подробнее…

Помощь в технических вопросах

Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение — ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации.
Подробнее…

Понравилась статья? Поделить с друзьями:
  • Ваз 2109 при повороте руля срабатывает сигнал как исправить
  • Как найти площадь окружности на клетчатой бумаге
  • Как найти на сайте списки поступившего
  • Как починить оберег геншин найти недостающую часть
  • Ведьмак как найти сефирот кетер