Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с числами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гил Бейтс
Товарищи помогите пожалуйста!

Определить все представления нечетного числа n в виде суммы трех простых чисел.

ps Большая просьба выложить алгоритм, чтобы было понятнее. Спасибо.
Адель
любых трех простых чисел?
подозреваетнся наверное, которыее входят в число..но опять таки же из может и не быть 3 или может быть гораздо больше
volvo
Цитата(Адель @ 2.05.2007 23:27)
любых трех простых чисел?

Именно любых... Это так называемая "слабая проблема Гольдбаха". Определение - здесь:
http://ru.wikipedia.org/wiki/%D0%9F%D1%80%...%B0%D1%85%D0%B0

P.S. По поводу решения задачи - ограничения на величину числа есть?
Для не очень больших чисел (не превышающих 255) практически полное решение лежит здесь: разложение числа

Все что надо будет доделать - это заполнить множество diapazon простыми числами, используя, например, метод "Решета Эратосфена", и добавить в программу условие, ограничивающее количество чисел тремя...
Гил Бейтс
вот собственно сделал, только есть проблема с которой не могу справиться:программа не хочет предствлять число с двумя и более одинаковыми числами(прим. 5+5+1=11)



program x;
uses crt;
var a:array[1..999] of integer;
b, i,j,k,n,c:integer;
begin
clrscr;
writeln('vvesti n');
readln(n);
for i=l to n do
begin
for j:=1 to i div 2 do
begin
if i mod j=0 then k:=k+1;
end;
if k=l then
begin
c:=c+l;
a[c]:=i;
end;
k:=0;
end;
b:=0;
for i:=1 to с do
begin
for j:=i+1 to c do
begin
for k:=j+1 to c do
begin.
if a[i]+a[j]+a[k]=n then begin writeln(a[i],’+’,a[i],'+',a[k]);
b:=b+1;
end;
end;
end;
end;
writeln(‘s=’,s:2);
readkey;
end.



Гил Бейтс
гм...
мисс_граффити
b:=0;
for i:=1 to с do
begin
for j:=i+1 to c do
begin
for k:=j+1 to c do

ну, видимо, надо по-другому границы циклов расставить.
то есть не j:=i+1, a j:=i. и с k так же.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.