2010-11-28 8 views
1

Ich habe den Code in PLSQL geschrieben. Wo in ich muss Prüfen Sie, ob die Summe der Würfel der Ziffern = sich selbst nummerieren soll.Prüfen Sie, ob die Summe der Würfel der Ziffern = sich selbst nummeriert

Ich habe versucht, durch den Algorithmus zu bleiben, noch gibt es einige Fehler. Bitte helfen. Ich bin neu in PLSQL.

Im Anschluss ist mein Code:

set serveroutput on; 



Declare 

    I number(4); 
    Sum number(4):=0; 
    C number(15):=10; 

Begin 
    for I in 1..999 
    loop 

    --  dbms_output.put_line(I); 



     Sum:=power(mod(I,C),3); 

     while mod(I,C) 
     loop 

      Sum:=power(mod(mod(I,C),C),3); 


      C:=C*10; 

     end loop;  


     if Sum=I then 

      dbms_output.put_line(I);   

     end if; 

    end loop; 

End; 

/
+0

Datenbanken können das tun? Fantastisch. – Yehonatan

+0

@Yehonatan - Ja :) – Pavitar

+0

Ich sage es noch einmal - fantastisch! – Yehonatan

Antwort

3

sum ist ein Schlüsselwort in plsql, sollten Sie nicht verwenden, die als Variablenname werden. Hier

ist die Lösung für Ihr Problem:

SET serveroutput ON format wraped; 
DECLARE 
    i INTEGER := 153; 
    j INTEGER; 
    summ INTEGER := 0; 
BEGIN 
    j  := i; 
    WHILE i > 0 
    LOOP 
    summ := summ + MOD(i,10) ** 3; 
    i := FLOOR (i/10); 
    END LOOP; 
    IF summ = j THEN 
    dbms_output.put_line('Sum of cubes of digits is EQUAL to the number'); 
    ELSE 
    dbms_output.put_line('Sum of cubes of digits is NOT EQUAL to the number'); 
    END IF; 
END; 

Die Lösung funktioniert für jede ganze Zahl i, der NUMBER (38) ist.