Другие языки программирования и технологии

Помогите пожалуйста с паскалем)))

Определить является ли заданное число Z составным
uses Crt;
var a,i,s:Word;
begin
ClrScr;
writeln('Vvedite chislo');
readln(a);
s:=0;
for i:=1 to a do
if a mod i=0 then inc(s);
if s=2 then writeln('prostoe')
else writeln('Sostavnoe');
ReadKey;
end.
Марат Сунгатуллин
Марат Сунгатуллин
1 395
Лучший ответ
Арифметику мы конечно не проходили и что такое простое число мы не проходили да?
Установить переменную SOSTAV:=false. Задать в цикле по i от 2 до Z-1 деление Z на переменную цикла i. Если остаток от деления равен 0 (т. е. Z делится на i без остатка) , то это - составное число (выести его на экран с сообщением о том, что составное число) , SOSTAV:=true и закончить цикл. После цикла проверить SOSTAV. Если FALSE - то число простое.
Авторы предыдущих ответов приколисты. Какой смысл перебирать все числа от 1 до заданного, или только так умеем определять простоту числа?
В случае полного бессмысленного перебора нужно проходить максимум до корня из заданного числа.
а так, лучше для начала использовать простой алгоритм "Решето Эратосфена"
берёшь число, делишь его на 2, если нет остатка, значит составное, есть - идём дальше - делишь на 3 и т. д. (можешь закончить поиск делителя числом в 3 или 2 раза меньшим, чем данное, если делитель не найден - число постое, если есть хотя бы один делитель - составное) . делай либо рекурсией, либо перебором
поиск половины (трети) - делай через DIV, поиск остатка от деления - через MOD
S. K. For You........
S. K. For You........
3 596
пиши в Агент, помогу, чем смогу

program zadacha;
uses Crt;
var x,i,y:integer;
begin
ClrScr;
writeln('Введите число: ');
readln(x);
for i:=1 to x do
if x mod i=0 then inc(y);
if y=2 then writeln('число простое')
else writeln('число составное');
end.
Asilbek Batirbekov
Asilbek Batirbekov
486