Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2007
N4ota N4ota is offline
Registrado
 
Registrado: may 2007
Posts: 4
Poder: 0
N4ota Va por buen camino
Exclamation 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 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

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

se agradece toda colaboracion de antemano

Última edición por marcoszorrilla fecha: 10-06-2007 a las 23:40:57.
Responder Con Cita
  #2  
Antiguo 08-06-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
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.

Última edición por xEsk fecha: 08-06-2007 a las 20:21:30.
Responder Con Cita
  #3  
Antiguo 08-06-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #4  
Antiguo 08-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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 ....
Responder Con Cita
  #5  
Antiguo 09-06-2007
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Lightbulb

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.
Responder Con Cita
  #6  
Antiguo 10-06-2007
N4ota N4ota is offline
Registrado
 
Registrado: may 2007
Posts: 4
Poder: 0
N4ota Va por buen camino
Red face

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 aunque me costo lo dejare por aqui para futuras generaciones
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

Última edición por marcoszorrilla fecha: 10-06-2007 a las 23:39:51. Razón: Añadir etiquetas Delphi
Responder Con Cita
  #7  
Antiguo 10-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda PorFavor¡¡¡¡ JKM Gráficos 5 21-06-2006 15:58:06
Algo un poco fuera de lo comun JerS Impresión 2 25-10-2005 18:05:28
Algo un poco extraño JerS Varios 1 19-10-2005 22:22:56
Una Ayuda Porfavor!! JerS Varios 2 17-08-2005 20:07:06
Ayuda Porfavor MasterOzzy Varios 2 25-11-2003 16:14:15


La franja horaria es GMT +2. Ahora son las 04:26:09.


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
Copyright 1996-2007 Club Delphi