Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на нахождение составных чисел

Автор: Aljonka 31.12.2006 13:15

Напечатать все составные числа в интервале [2;n]

Автор: Lapp 31.12.2006 16:07

Цитата(Aljonka @ 31.12.2006 10:15) *

Напечатать все составные числа в интервале [2;n]

Что ты хочешь - алгоритм или реализацию? Впрочем, в любом случае сначала нужен алгоритм.. smile.gif
У тебя есть свои соображения? или, может, уже начала делать прогу? Покажи свои успехи. Тут помогут..

Автор: Гость 31.12.2006 16:29

Можно найти все простые числа в диапазоне с помощью алгоритма "решето Эратосфена", и напечатать те которые не являються простыми:


uses
crt;
const
n=100;
var
chisla:set of byte;
i:byte;

procedure eratosfen(i:byte);
var
z:byte;
begin
if i>=n then exit;
z:=i;
while z<=n do
begin
inc(z,i);
if z in chisla then exclude(chisla,z)
end;
eratosfen(i+1)
end;

begin
clrscr;
chisla:=[1..n];
eratosfen(2);
for i:=1 to n do
if( not(i in chisla)) then write(i:4);
end.


Автор: volvo 31.12.2006 16:31

Гость,
N = 768, твои действия?

(кстати, вот программу-то как раз перепечатывать и незачем, у нас в FAQ-е лежит ОТЛАЖЕННАЯ, а насчет этой я не уверен)

Автор: Aljonka 31.12.2006 16:38

smile.gif cool.gif no1.gif rolleyes.gif yes2.gif
vsjo poluchilosj...

uses crt;
var n,k,i,j,kl:integer;
begin
clrscr;
writeln('Vvedite pervoe i poslednee chislo (vozmozhno[2;n])');
readln(n,k);
writeln('Vse slozhnye chisla [',n,';',k,']');
for i:=n to k do
begin
kl:=0;
for j:=2 to round(sqrt(i)) do
if (i mod j)=0 then
kl:=kl+1;
if kl<>0 then
writeln(i,'');
end;
readln;
end.

Автор: Aljonka 31.12.2006 16:55

nemnogo oshiblasj
7) writeln('Vse sostavnye chisla [',n,';',k,']');