0votos

Emulando a Dik T. Winter en PL-SQL

por alvaro sanz llorente hace 1 año

Ahora en pl-sql

Un número de N dígitos es narcisista si la suma de las potencias N-ésimas de sus dígitos es él mismo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
create or replace function EmulandoaDikTWinter(numero integer) return boolean as 
numero2 varchar(30):=''; 
suma integer:=0; 
esnarcisista boolean:=false; 
begin 
 numero2:= TO_CHAR(numero); 
  
 for p in 1.. length(numero2) 
   loop 
      
  suma:=suma + power(TO_NUMBER(SUBSTR(numero2,p,1)),length(numero2)); 
   end loop; 
if numero=suma then 
  esnarcisista:=true; 
   
  else 
  esnarcisista:=false;   
   
end if; 
return esnarcisista; 
end; 
 
declare  
numero integer:=0; 
 
begin 
  numero:=&dato; 
   
  for p in 1..numero 
    loop 
      if  EmulandoaDikTWinter(p)=true then 
        dbms_output.put_line(p); 
       end if; 
    end loop; 
    end; 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.