IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Совершенные числа, и что-то еще про цикл.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Составить программу для графического изображения делимости чисел от 1 до n (n - исходное данное). В каждой строке надо печатать число и сколько плюсов, сколько делителей у этого числа. Например, если исходное данное - число 4, то на экране должно быть напечатано:


1+

2++

3++

4+++

Составить программу получения всех совершенных чисел, меньших заданного числа n. Число называется совершенным, если равно сумме всех своих положительных делителей, кроме самого этого числа. Например, 28 - совершенно, так как 28=1+2+4+7+14.
Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m.
Даны натуральные числа n и m. Найти все пары дружественных чисел, лежащих в диапазоне от n до m. Два числа называются дружественными, если каждое из них равно сумме всех делителей другого (само число в качестве делителя не рассматривается).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Правила читать будем? FAQ и поиск зачем?
Совершенные числа
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


ne nashol !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


плохо искал.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Rebjat, mozhet prosto pomozhete... Esli vam vsjo jasno i do boli ponjatno...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Поиск совершенных чисел.
Цитата
Определенный интерес для любителей представляет программа поиска совершенных чисел. Ее схема проста: в цикле для каждого числа проверять сумму его делителей и сравнивать ее с самим числом, - если они равны, то это число совершенное.


Код
VAR I,N,Summa: LONGINT;
  Delitel: INTEGER;
begin FOR I:=3 TO 34000000 DO BEGIN Summa:=1;
 FOR Delitel:=2 TO SQRT(I)
 DO BEGIN N:=(I DIV Delitel);
       IF N*Delitel=I THEN Summa:=Summa + Delitel + (I DIV Delitel);
  END;
 IF INT(SQRT(I))=SQRT(I) THEN Summa:=Summa-INT(SQRT(I));
  IF I=Summa THEN WRITELN(I,’ - ‘,Summa);
  END;
END.


Проверка: простое-ли число.
(вполне подходит для не самых больших чисел)
Код

function isPrime(X: word): boolean;
var
i: integer;
Begin
isPrime:=false;
for i:=2 to trunc(sqrt(x)) do
if x mod i = 0 then Exit;
isPrime:=true
End;



это з фака.... пожалуй этого должно хватить


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


pishel ordinal expression expected na etoj stroke DO BEGIN N:=(I DIV Delitel);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


так:


VAR I,N,Summa: LONGINT;
Delitel: INTEGER;
begin
FOR I:=3 TO 34000000 DO
BEGIN
Summa:=1;
FOR Delitel:=2 TO trunc(SQRT(I)) DO
BEGIN
N:=(I DIV Delitel);
IF N*Delitel=I THEN Summa:=Summa + Delitel + (I DIV Delitel);
END;
IF INT(SQRT(I))=SQRT(I) THEN Summa:=Summa-trunc(SQRT(I));
IF I=Summa THEN WRITELN(I,' - ',Summa);
END;
END.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


еще один пост на транслите и тема будет закрыта!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


ссори, не заметил твоё мсг. всё транслиту - нет !!
давно пора, в XXI веке живем, есть поддержка всех языков...

Сообщение отредактировано: Oleg_Z -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Даны натуральные числа n и m. Найти все пары дружественных чисел, лежащих в диапазоне от n до m. Два числа называются дружественными, если каждое из них равно сумме всех делителей другого (само число в качестве делителя не рассматривается).
Что-то никак не получается...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


а ты покажи что получается...
Код в студию, что уже написанно.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Код
uses crt;
var n,m,del1,del2,per,vtor,summ1,summ2:integer;
begin
readln (n,m);
summ1:=0;
summ2:=0;
for per:=n to m do
for vtor:=n to m  do
begin
for del1:= n to m do
for del2:= n to m do
if (per mod del1=0) then inc (summ1);
if (vtor mod del2=0) then inc (summ2);
end;
if (summ1-per)=(summ2-vtor) then writeln (per,' ', vtor);
readkey;
end.

виснет... хэлп !!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Нет, она не виснет, она просто очень долго считает... Ты же пользуешься полным перебором - нерационально. Можно попробовать воспользоваться известной формулой для нахождения пар дружественных чисел (см. аттач)


Эскизы прикрепленных изображений
Прикрепленное изображение
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Спасибо. Ну может кто-то знает полегче вариант, а то этот я не осилю. я нуб...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Цитата(Ромка @ 21.02.05 20:06)
может кто-то знает полегче вариант, а то этот я не осилю.

Чем легче вариант - тем дольше он будет работать... А тут главное - скорость... А сложного в этом абсолютно ничего нет...

Код
Function PowerTwo(n: Byte): LongInt;
 Begin
   PowerTwo := LongInt(2) shl Pred(n)
 End;

Function IsPrime(X: LongInt): Boolean;
 Var i: integer;
 Begin
   isPrime := False;
   For i := 2 To Trunc(Sqrt(x)) Do
     If x mod i = 0 Then Exit;
   isPrime := True
 End;

Var
 n: integer;
 p, q, r: longint;
 a, b: Longint;

Const
{ Интервал }
 _n = 10;
 _m = 1000;
begin
 For n := 2 To 15 Do
   Begin
     p := 3 * PowerTwo(Pred(n)) - 1;
     q := 3 * PowerTwo(n) - 1;
     r := 9 * PowerTwo(Pred(2*n)) - 1;

     If isPrime(p) and isPrime(r) and isPrime(q) Then
       Begin
         a := PowerTwo(n) * p * q;
         b := PowerTwo(n) * r;
         If (a > _n) and (a < _m) and
            (b > _n) and (b < _m) Then
           WriteLn('The pair is: ', a:10, ' and ', b: 10)
       End;
   End;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Спасибо, вы очень помогли!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






cialis naproxen
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.11.2021 3:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name