Ответы пользователя по тегу Delphi
  • Скажите пожалуйста, где ошибка? Задание звучит так: "Получить все простые делители числа"?

    Ошибка - что count не очищаете для перед циклом с k; ну и k, как сказали выше, нужно начинать с 2, так как любое число делится на 1.

    Ещё i можно начинать с 2 и до (n/2) - поскольку делителей дальше не будет
    Ну и k, соответственно, с 2 до (i/2)
    var 
    	n,i,k: integer;
    	flagSimple: boolean;
    begin
    	writeln('Введите натуральное число: ');
    	readln(n);
    	for i:=2 to (n/2) do 
    	begin
    		if n mod i = 0 then 
    		begin
    			flagSimple := true;		//считаем пока, что i - простое (ну или count := 0, если использовать число)
    			for k:=2 to (i/2) do
    				if (i mod k = 0) then
    				begin
    					flagSimple := false;
    					break;		//выходим из цикла for для k, так как обнаружили, что i - не простое
    				end;
    			if (flagSimple = true) then
    				writeln(i, ' ');
    		end;
    	end;
    						
    end.
    Ответ написан
    Комментировать