IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   ПОмогите пожалуйста решить задачу по програмированию (https://www.imho.ws/showthread.php?t=110130)

ХАрок 23.10.2006 20:49

ПОмогите пожалуйста решить задачу по програмированию
 
:молись: ПОмогите пожалуйста решить задачу по програмированию!!!
Задача такая:
Определить, является ли число простым. Простым будет считаться число, которое делится только на 1 и на само себя. Составить процедуру для определения количества делителей произвольного числа, введенного с клавиатуры.
:idontnow: :help:

Yurij 23.10.2006 21:20

Тебе на Pascal подойдет? Вроди у меня был исходник такой задачи.

Kvarx 23.10.2006 21:22

Самый простой способ это перебирать, числа от 1 до корня из N, и смотреть делится или нет.

Есть тест Рабина-Карпа, но там ответ дается с вероятностью. Чем больше испытаний тем ближе она к единице.

Если интересно можно почитать Акритаса или Винограда или Бухштаба. Обычно книги называется теория чисел (number theory).

Yurij 23.10.2006 21:36

Не уверен это ли, так как сейчас нет времени дальше искать.
Отпиши потом - подошло ли.
Цитата:

program pir_сршыд;
var x: integer;
{ function ISPRIMFN (n : longint) : boolean;
var i : longint;
begin
isprimfn := true;
for i := 2 to Round(Sqrt(n)) do
if (n mod i) = 0 then begin
isprimfn := false;
exit;
end;
end; }
function pirminis(x: integer):boolean;
var i, j, tmp: integer;
begin
tmp:=0;
if (x>0) then begin
for i:=1 to x do
if x mod i = 0 then tmp:=tmp+1; {kollichesto delitelej}
if tmp=2 then pirminis:=true else
pirminis:=false;
end else
pirminis:=false;
end;
begin
Write('vvedite chislo: ');
ReadLn(x);
if pirminis(x) then WriteLn('pravilnoe chislo') else
WriteLn('ne to...');
ReadLn
end.

Decline 01.11.2006 07:30

Можно использовать решето Эратосфена.
Алгоритм такой - есть диапазон чисел, вначале выбрасываем все числа кратные 2 - смотрим минимальное не выброшенное число - выбрасываем все числа кратные этому числу и.т.д

helldomain 02.11.2006 12:09

Algoritm horosh, no, trudno predstawit sebe, chto-bi zadacha po wibrasiwaniju kratnih chisel rabotala bistree deleniya, hotya mojno, po idee, sdelat rekursiju. Primer dlya chisla 7:
chislo 7 prostoe - rekursivno zapuskaem perebor ot 7 do 13
8 - propuskaem
9 - budet propuscheno ranee, t.k. 9 podpadaet pod 3.
i.t.d.

Volt 06.11.2006 03:11

Лучший, кажется, вероятностный тест Рабина-Миллера
http://www.rusnauka.com/ESPR_2006/In...20e.d..doc.htm
Если надо для небольших чисел, то решето Эратосфена

@Gava 13.11.2006 18:58

Нужно решить задачку на C#
1. Вначале записать в файл (t:streamr.txt) при помощи randomise() одномерный массив
2. Затем создать меню из нескольких (4) сортировок(shell,shaker,etc) и выводить отсортированный массив в (t:streamw.txt) как rezult.

Также нужен готовый windows Calculator на C#:
http://www.csharpfr.com/codes/CALCULATRICE-SIMPLE_11429.aspx
можно ли найти на других сайтах???

DIEagnoz 23.11.2006 02:51

Цитата:

Сообщение от ХАрок
:молись: ПОмогите пожалуйста решить задачу по програмированию!!!
Задача такая:
Определить, является ли число простым. Простым будет считаться число, которое делится только на 1 и на само себя. Составить процедуру для определения количества делителей произвольного числа, введенного с клавиатуры.
:idontnow: :help:

Шукаємо прості числа від 1 до 1000 (С++)
Я так шукав :biggrin:
for (int i=3;i<=1000;i++)
if (i%2&&i%3&&i%5&&i%7!=0||i==3||i==5||i==7)
cout<<"\t"<<i;

Demich 23.11.2006 17:08

Цитата:

ХАрок:
Определить, является ли число простым. Простым будет считаться число, которое делится только на 1 и на само себя. Составить процедуру для определения количества делителей произвольного числа, введенного с клавиатуры.
Не стоит ломать голову над математикой. Все намного проще.
Насколько я понял из условия, надо найти количество делителей числа, если оно не простое:

/* n - число введенное с клавиатуры; */
int flag = 0;
for (int i=2; i<n; i++)
{
if (n\i) flag++; // - если правда, то числа делятся без остатка, значит есть делитель;
}
if (flag) // - число не простое, выводим количество делителей, оно в переменной flag;
else // - выводим "число простое" (типа flag = 0 значит делителей не было найдено);


Часовой пояс GMT +4, время: 13:11.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.