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 |
Подскажите подпрограммы длинного деления и сложения. Ишь чего захотел…
0 |
VampirSS 19 / 19 / 15 Регистрация: 08.12.2010 Сообщений: 34 |
||||
11.12.2010, 12:35 |
3 |
|||
0 |
Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
11.12.2010, 12:40 |
4 |
VampirSS, Думаю это наш олипионик знает, ему нужно найти делители чисел типа
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 |
Помогаю со студенческими работами здесь
Найти сумму элементов матрицы, у которых сумма делителей меньше данного числа Х Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа 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 до 200, У которых сумма цифр равна S
- Найти сумму всех четных элементов массива А, имеющих четные индексы
- Найти сумму четных цифр числа на нечетных местах
- Найти сумму цифр введенного с клавиатуры натурального числа
- Дано число n. Найдите такой его делитель d
- Найти количество цифр, равных 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.16
Задача 2.16
Дано натуральное число N. Вывести на экран сумму его делителей. Число 1 считается делителем любого натурального числа. Число N не является делителем числа N.
Эту задачу довольно часто задают в контрольных и прочих студенческих делах. Задача несложная. Однако на её примере начинающие могут кое-чему научиться.
Алгоритм решения довольно простой:
- Перебираем в цикле все возможные целые числа от 1 до числа N.
- Каждый раз пытаемся делить число N на текущее число. Если оно делится без остатка, то текущее число является делителем числа N. Прибавляем его к итоговой сумме.
Разумеется, сначала подготавливаем необходимые переменные.
Ну а чтобы задачка была поинтереснее, предлагаю дополнительно сделать так, чтобы на экран была выведена не только итоговая сумма делителей числа N, но и сами делители.
Решения на Паскале и С++ представлены ниже. Если кто забыл, что такое натуральное
число, то см. здесь.
Краткое описание программы:
- Обнуляем переменную Sum, в которой у нас будет итоговая сумма делителей.
- Получаем случайное значение и записываем его в переменную N.
- Затем запускаем цикл от 1 до N и в каждой итерации цикла вызываем нашу функцию ThisDivider(N, i), которая возвращает TRUE, если число i является делителем числа N. Саму функцию описывать не буду, потому что она достаточно простая.
- Если число i является делителем числа N, то к переменной Sum мы прибавляем число i, а к строке Str присоединяем строковое представление числа i, предварительно преобразовав это число в строку. Так мы получаем строку, которая содержит все делители числа N.
- Ну и в конце выводим всё на экран.
Обратите внимание, что для использования функции преобразования числа в строку в Паскале надо подключить модуль 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
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… |
|
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение — ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. |