Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2009, 10:47   #1
давид меликянц
 
Регистрация: 02.01.2009
Сообщений: 6
Восклицание помогите решить 2 задачи

1
дано натуральное число n(n<=10^1000) необходимо вычислить сумму 1+2+3+,,,+n
во входном файле n
в выходном ответ на задачу
2
заданному числу n определить количество пар простых чисел(р1,р2) таких что их сумма не превосходит n и является простым числом
во входном файле число n(1<=n<=10000)
в выходном файле ответ на задачу
давид меликянц вне форума Ответить с цитированием
Старый 02.01.2009, 11:44   #2
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию 1)

uses crt;
var
n,sum,i:longint;
fil:text;
begin
clrscr;
assign(fil,'c:\in.txt');
reset(fil);
readln(fil,n);
close(fil);
assign(fil,'c:\out.txt');
rewrite(fil);
sum:=0;
for i:=1 to n do
sum:=sum+i;
writeln(fil,sum);
close(fil);
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 02.01.2009, 12:17   #3
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию Не забудь про отзыв) На 2-ую :

uses crt;
var
mas:array[1..10000] of integer;
fil:text;
n,i,j,k,l:integer;
kol:longint;
f:boolean;
begin
clrscr;
assign(fil,'c:\in.txt');
reset(fil);
readln(fil,n);
k:=0;
for i:=2 to n do
begin
f:=true;
for j:=2 to round(i/2) do
if i mod j=0 then f:=false;
if f then begin k:=k+1; mas[k]:=i; end;
end;
kol:=0;
close(fil);
assign(fil,'c:\out.txt');
rewrite(fil);
for i:=1 to k-1 do
begin
for j:=i+1 to k do
begin
f:=true;
for l:=2 to (mas[i]+mas[j]) div 2 do
if (mas[i]+mas[j]) mod l=0 then f:=false;
if (f) and ((mas[i]+mas[j])<=n) then kol:=kol+1;
end;
end;
writeln(fil,kol);
close(fil);
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 02.01.2009, 13:26   #4
давид меликянц
 
Регистрация: 02.01.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Tkirill Посмотреть сообщение
uses crt;
var
n,sum,i:longint;
fil:text;
begin
clrscr;
assign(fil,'c:\in.txt');
reset(fil);
readln(fil,n);
close(fil);
assign(fil,'c:\out.txt');
rewrite(fil);
sum:=0;
for i:=1 to n do
sum:=sum+i;
writeln(fil,sum);
close(fil);
readln;
end.
спасибо!
но на большие значения не проходит!
если можешь подправь плиз!
давид меликянц вне форума Ответить с цитированием
Старый 02.01.2009, 14:26   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

кстати не все так просто для больших значений - сча я придумаю

PS: оказалось не очень сложно, просто для больших значений программа ой как долго будет выполняться

Последний раз редактировалось capta1n; 02.01.2009 в 16:09.
capta1n вне форума Ответить с цитированием
Старый 02.01.2009, 15:22   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Код:
{$N+}
program natur;
var
 number,sum,i : extended;
begin

  assign (input,'input.txt');
  assign (output,'output.txt');
  reset (input);
  readln (number);
  close (input);

  i:=0;
  sum:=0
  repeat
    i:=i+1;
    sum:=sum+i
  until i=number;

  rewrite (output);
  writeln (sum);
  close (output);
end.
Директива {$N+} включает математический соцпроцессор ( это для таких больших чисел, которые поддерживает extended ) - вот

Последний раз редактировалось capta1n; 02.01.2009 в 16:25.
capta1n вне форума Ответить с цитированием
Старый 02.01.2009, 16:19   #7
давид меликянц
 
Регистрация: 02.01.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Tkirill Посмотреть сообщение
uses crt;
var
mas:array[1..10000] of integer;
fil:text;
n,i,j,k,l:integer;
kol:longint;
f:boolean;
begin
clrscr;
assign(fil,'c:\in.txt');
reset(fil);
readln(fil,n);
k:=0;
for i:=2 to n do
begin
f:=true;
for j:=2 to round(i/2) do
if i mod j=0 then f:=false;
if f then begin k:=k+1; mas[k]:=i; end;
end;
kol:=0;
close(fil);
assign(fil,'c:\out.txt');
rewrite(fil);
for i:=1 to k-1 do
begin
for j:=i+1 to k do
begin
f:=true;
for l:=2 to (mas[i]+mas[j]) div 2 do
if (mas[i]+mas[j]) mod l=0 then f:=false;
if (f) and ((mas[i]+mas[j])<=n) then kol:=kol+1;
end;
end;
writeln(fil,kol);
close(fil);
readln;
end.

и за эту спасибо но на большые числа она тоже не проходит по времяни 2 сек!
давид меликянц вне форума Ответить с цитированием
Старый 02.01.2009, 16:21   #8
давид меликянц
 
Регистрация: 02.01.2009
Сообщений: 6
По умолчанию

спасибо большое!
давид меликянц вне форума Ответить с цитированием
Старый 02.01.2009, 16:25   #9
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

не за что, только отзыв оставь xD - про директиву не забудь {$N+}

Последний раз редактировалось capta1n; 02.01.2009 в 16:28.
capta1n вне форума Ответить с цитированием
Старый 02.01.2009, 17:22   #10
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию

Слушайте, а тут может надо типизированные файлы использовать. В них операции записи\чтения быстрее выполняются.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить 2 задачи Pashtet Паскаль, Turbo Pascal, PascalABC.NET 6 06.11.2008 04:18
Помогите решить задачи. (С++) Memfis_nya Помощь студентам 6 04.11.2008 17:44
Помогите решить задачи в C++ marsius Помощь студентам 4 18.04.2008 23:33
Помогите решить задачи Andyst Помощь студентам 3 25.12.2007 15:14
Помогите решить задачи! Вилен Помощь студентам 2 10.10.2007 23:12