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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2014, 20:45   #1
Radmir. v
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа N.

Помогите решить задачу с процедурами на ABC Паскале, пожалуйста))
Заданы два целых числа М, N. Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа N.
Radmir. v вне форума Ответить с цитированием
Старый 08.11.2014, 14:33   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Radmir. v, задание несложное (хотя есть нюансы в трактовке задания)

Вы хоть что-нибудь написали? Что не получается?

про нюансы. Расскажите, какие простые делители, например, у числа 16 ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2014, 14:58   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
сумма:=0;
произведение:=1;
Для i = 1 До М 
если i простое то сумма:=сумма+i
иначе произведение:=произведение*i;
Если сумма>произведение то вывод("Больше")
иначе вывод("Не больше");
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.11.2014, 15:37   #4
Radmir. v
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию

Вы хоть что-нибудь написали? Что не получается?

Вот мои наброски. мне кажется,что я сделал что-то неправильно((

Код:
var
number, delit, temp, sum, pr: integer;
    flag: BOOLEAN;
    procedure A1;
    begin
    readln(number);
while number<>0 do
begin
temp:=number mod 10;
	flag:= true; 		         {предположим, что число простое}
delit:=2;
while flag and (delit<=number div 2) do
           if number mod delit=0 then flag:=false
 else delit:=delit+1;
if flag then sum:=sum+number
        else writeln ('число составное');	{выделение цифры из числа}
number:=number div 10;                         {уменьшение числа на один разряд}
	end;

	end;
	procedure A2;
	  begin
    pr:=1;
readln(number);
while number<>0 do
begin
temp:=number mod 10;
	flag:= true; 		         {предположим, что число простое}
delit:=2;
while flag and (delit<=number div 2) do
           if number mod delit=0 then flag:=false
 else delit:=delit+1;
if flag then  writeln ('число простое')
        else    pr:=pr*number;

number:=number div 10;
	end;

end;
begin
writeln ('Ведите число M') ;
A1;
READLN ;
writeln ('Ведите число N') ;
A2;
READLN ;
 if sum>pr then writeln ('верно')
           else  writeln ('неверно') ;
END.

Последний раз редактировалось Stilet; 08.11.2014 в 16:34.
Radmir. v вне форума Ответить с цитированием
Старый 10.11.2014, 18:50   #5
Radmir. v
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Radmir. v Посмотреть сообщение
Помогите решить задачу с процедурами на ABC Паскале, пожалуйста))
Заданы два целых числа М, N. Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа N.
Ребятаа, помогите... ну очень нужно...
Radmir. v вне форума Ответить с цитированием
Старый 10.11.2014, 22:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ой. вижу, что пытались.
Но, к сожалению, исправить ваш код не могу, уровня мастерства не хватает....

может быть, такой вариант устроит?
Код:

function isPrime(X: LongInt): boolean;
var i, sqrtX: integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     sqrtX := trunc(sqrt(x));
     while i <= sqrtX  do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;


procedure SumOfSimple(M : integer; var Sum : integer);
var i : integer;
begin
  Sum := 0;
  for i := 1 to trunc(sqrt(M)) do
    if M mod i = 0 then
      if isPrime(i) then Sum := Sum + i;
  if isPrime(M) then Sum := Sum + M;
end;

procedure MultiplyOfNotSimple(N : integer; var Pr : integer);
var i : integer;
begin
  Pr := 1;
  for i := 1 to trunc(sqrt(N)) do
    if N mod i = 0 then
      if not isPrime(i) then Pr := Pr * i;
  if not isPrime(N) then Pr := Pr * N;
end;

var N,M, S, Pr : integer;
begin
  writeln('Ведите число M');
  ReadLn(M);
  writeln('Ведите число N');
  ReadLn(N);

  SumOfSimple(M, S);
  MultiplyOfNotSimple(N, Pr);
  
  if S > Pr then writeln('верно')
  else writeln('неверно');
  
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение произведения составных делителей числа Alexbmgn Помощь студентам 2 19.01.2012 21:36
Определение простых и составных делителей! Alexbmgn Помощь студентам 5 22.11.2011 07:26
Сумма делителей каждого числа последовательности zhannabs Помощь студентам 3 13.01.2011 04:59
Сумма простых делителей Lion_paint Паскаль, Turbo Pascal, PascalABC.NET 0 05.05.2009 19:28