Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2016, 07:50   #1
Chaffee
Новичок
Джуниор
 
Регистрация: 13.01.2016
Сообщений: 4
По умолчанию Сколько делителей у 97

Нужно составить программу: Сколько делителей у 97 считая 1 и деление на саму себя.
Chaffee вне форума Ответить с цитированием
Старый 14.01.2016, 08:01   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Всего 2!
Код:
var i,d,z:integer;
    s:string;
begin
   Write('chislo = '); Readln(z);
   If z<1 then
   begin
      Writeln('Minimal''noe chislo - 1!');
      Readln;
      Exit;
   end;
   d:=1;
   s:='1';
   For i:=2 to z div 2 do
      If z mod i=0 then
      begin
         d:=d+1;
         s:=s+', '+IntToStr(i);
      end;
   If z>1 then
   begin
      d:=d+1;
      s:=s+', '+IntToStr(z);
   end;
   Writeln('Kol-vo deliteley: ',d);
   Writeln('Spisok deliteley: ',s);
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 14.01.2016 в 09:58. Причина: Не так понял заданее (видимо после Нового года :))
newerow1989 вне форума Ответить с цитированием
Старый 14.01.2016, 08:30   #3
Chaffee
Новичок
Джуниор
 
Регистрация: 13.01.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Всего 12
Код:
var i,j,d,m,z:integer;
    s,sm:string;
begin
   Write('chislo = '); Readln(z);
   If z<1 then
   begin
      Writeln('Minimal''noe chislo - 1!');
      Readln;
      Exit;
   end;
   m:=0;
   For i:=1 to z do
   begin
      d:=1;
      s:='1';
      For j:=2 to i div 2 do
         If i mod j=0 then
         begin
            d:=d+1;
            s:=s+', '+IntToStr(j);
         end;
      If i>1 then
      begin
         d:=d+1;
         s:=s+', '+IntToStr(i);
      end;
      If m<d then
      begin
         m:=d;
         sm:=s;
      end;
   end;
   Writeln('Kol-vo deliteley: ',m);
   Writeln('Spisok deliteley: ',sm);
   Readln;
end.
Сойдет?
Спасибо большое, только код я не совсем понял, и что-то он слишком большой.
Chaffee вне форума Ответить с цитированием
Старый 14.01.2016, 09:01   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ввод/вывод оставь, а подсчет можно так:
Код:
  m:=0; sm:=''; for i:=1 to z div 2 do if z mod i = 0 then begin Inc(m); sm:=sm+IntToStr(i)+' '; end; Inc(m); sm:=sm+IntToStr(z);
Так не большой?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2016, 09:05   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Пожалуйста!

Кстати, я там подкорректировал свой пост
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 14.01.2016 в 09:58.
newerow1989 вне форума Ответить с цитированием
Старый 14.01.2016, 09:09   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

12? А список их можете привести?

Код:
var c,i:integer;
begin
     i := trunc(sqrt(97))+1;
     c := 2;
     while i>2 do
     begin
          if 97 mod i = 0 then inc(c);
          dec(i);
     end;
     writeln(c);
     readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 14.01.2016 в 09:12.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.01.2016, 09:18   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Уррра! Я дождался.
А ещё можно на простые разложить и по ним количество сказать тогда совсем красота будет

И число простое, кстати..
Poma][a вне форума Ответить с цитированием
Старый 14.01.2016, 09:35   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Я дождался.
Чего? Не правильно вернет для 100 например. И для 1 тоже.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2016, 09:50   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Чего? Не правильно вернет для 100 например. И для 1 тоже.
точно. Хз почему решил что корень надо брать, Мб Новый Год. Но ведь задание было конкретно для 97 а не универсальное

Код:
var c,a,i:integer;
begin
     a := 97;
     a := abs(a);
     i := a div 2 + 1;
     c := 1;
     if a >= 2 then
     while i>=1 do
     begin
          if a mod i = 0 then begin writeln(i); inc(c); end;
          dec(i);
     end;
     writeln(c);
     readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 14.01.2016 в 09:53.
Aleksandr H. вне форума Ответить с цитированием
Старый 14.01.2016, 10:00   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Корень можно и нужно, для больших чисел этот способ быстрей. Просто не правильно реализовано. Примерно так делал бы
Код:
  j := trunc(sqrt(z))+1;
  m := 0;
  for i:=1 to j do begin
    if z mod i = 0 then inc(m,2);
    if i*i=z then Dec(m);
  end;
или так, что оптимальней
Код:
  j := trunc(sqrt(z))+1;
  if j*j>z then dec(j);
  m := 0;
  for i:=1 to j do if z mod i = 0 then inc(m,2);
  if (z mod j = 0) and (j*j = z) then dec(m);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.01.2016 в 10:10.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать сколько сводных таблиц и сколько срезов на рабочем листе? RISagitov Microsoft Office Excel 0 31.10.2015 19:30
Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа N. Radmir. v Помощь студентам 5 10.11.2014 22:23
Сколько стоит такая программка? И сколько по времени её сделать? Палыч I Фриланс 8 10.09.2010 16:23
сколько платит каждый жилец за электроэнергию и сколько они платят вместе. известно - стоимость 1кВт/час Pops Microsoft Office Excel 9 25.01.2009 15:28
Помогите оценить, сколько может стоить проект. Его покупают - сколько взять? grenles Свободное общение 4 16.07.2008 09:38