Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Porfavor algo de ayuda con un poco de codigo en delphi!! (https://www.clubdelphi.com/foros/showthread.php?t=44544)

N4ota 08-06-2007 20:02:53

Porfavor algo de ayuda con un poco de codigo en delphi!!
 
wenas:
disculpen soy nuevito por aca y veo k ustedes serian mi solucion mas rapida :D quisiera que me tiren una ayudita por aca tengo un problema y no se como resolverlo:
el problema es quisiera saber una forma de sumar los "n" numeros primos
osea:


n----> F ----->f:integer;



si n=5 entonces seria 1+2+3+5+7=18
si n=6 entonces seria 1+2+3+5+7+11=29
y asi

yo hice lo siguiente
Código Delphi [-]
 
function primo(n:integer):boolean;
var a,b:integer;
begin
a:=0
repeat
a:=a+1;
b:=n mod a;
until (b=0) or (b<>0);
if b<>0 then
begin
result:=true
else
result:=false;
end;
end;
function S_primo(n:integer):integer;
var

begin <------ bueno aqui mi duda si es que se puede utilizar un bucle para invocar a primo y sumar digito por digito ya que intento con for pero me pide que sea un dato diferente de un booleano :confused:

porfavor una pequeña ayuda ya saben hoy por ti mañana por mi :D

se agradece toda colaboracion de antemano :D

xEsk 08-06-2007 20:17:32

El codigo q has puesto para comprobar si es un numero primo, no funciona bien.

Para hacer lo q quieres, es mejor un while o repeat.

El codigo seria algo parecido a esto:

Código Delphi [-]
function S_primo(n:integer):integer;
var
  i, m: Integer;

begin
  i:=1; m:=0;
  Result:=0;
  while m <> n do
    begin
      if primo(i) then
        begin
          Result:=Result + i;
          Inc(m);
        end;
      Inc(i);
    end;
end;

No lo he probado mucho el codigo q te he puesto, pero diria que funciona.

Saludos.

roman 08-06-2007 20:35:41

N4ota, por favor utiliza títulos más descriptivos para tus mensajes. "Porfavor algo de ayuda con un poco de codigo en delphi!!" no dice nada en unos foros donde precisamente se ayuda en código delphi mayormente y dificulta las futuras búsquedas. Además procura utilizar las etiquetas adecuadas para escribir código, tales como [code] o [delphi].

A parte de eso, te doy la bienvenida a los foros y te aclaro que el número 1 no es primo.

// Saludos

seoane 08-06-2007 20:40:56

Solo añadir que solo tienes que comprobar si es divisible por los números menores a su raíz cuadrada.

Código Delphi [-]
function EsPrimo(x: integer): Boolean;
var
  i: integer;
begin
  for i:= 2 to Trunc(Sqrt(x)) do
    if x mod i = 0 then
    begin
      Result:= FALSE;
      Exit;
    end;
  Result:= TRUE;
end;

Por cierto, esto resulta un poco inútil:
Código Delphi [-]
  until (b=0) or (b<>0);
;) es broma, espero que no te parezca mal ....

fide 09-06-2007 16:49:33

El codigo que uso Seoane es el que he usado toda mi vida para calcular si un numero es primo, ya que los divisores de un numero siempre estaran por debako de la mitad de dicho numero, o sea por debajo de la raiz cuadrada.

N4ota 10-06-2007 22:24:59

agradezco a todos por la pequeña ayudita k me dieron en programacion en especial a roman y seoane por hacerme notar mis faltas el problemita me costo algo pero llegue a una conclusion por mi cuenta y funca :D aunque me costo :o lo dejare por aqui para futuras generaciones :D
Código Delphi [-]
 
function Verif_primo(n:integer):boolean;
var
    c,residuo:integer;
    b:boolean;
begin
  if n>1 then
  begin
    c:=1;
    repeat
    c:=c+1;
    residuo:=n mod c;
    until residuo=0;
    if n=c then
    begin
    b:=true;
  end
    else
    begin
    b:=false;
    end;
  end
  else
  begin
  b:=true;
  end;
  result:=b
end;
function S_primo(n:integer):integer;
var
    c,c1,c2:integer;
begin
  c:=0;
  c1:=0;
  c2:=0;
    repeat
    c:=c+1;
      if verif_primo(c)=true then
      begin
      c1:=c+c1;
      c2:=c2+1;
      end;
    until (c2=n);
    result:=c1;
end;
jejeje me gusta derrochar en codigo :D

seoane 10-06-2007 22:40:54

Por favor usa las etiquetas para publicar tu codigo. Por ejemplo:

[delphi]Tu codigo[/delphi]

Mira que bien queda así :) :
Código Delphi [-]
function Verif_primo(n:integer):boolean;
var
    c,residuo:integer;
    b:boolean;
begin
  if n>1 then
  begin
    c:=1;
    repeat
    c:=c+1;
    residuo:=n mod c;
    until residuo=0;
    if n=c then
    begin
    b:=true;
  end
    else
    begin
    b:=false;
    end;
  end
  else
  begin
  b:=true;
  end;
  result:=b
end;
function S_primo(n:integer):integer;
var
    c,c1,c2:integer;
begin
  c:=0;
  c1:=0;
  c2:=0;
    repeat
    c:=c+1;
      if verif_primo(c)=true then
      begin
      c1:=c+c1;
      c2:=c2+1;
      end;
    until (c2=n);
    result:=c1;
end;


La franja horaria es GMT +2. Ahora son las 08:50:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi