Проверьте, если сумма кубов цифр = к самому числу - PullRequest
1 голос
/ 28 ноября 2010

Я написал код в PLSQL. Где мне нужно Проверить, если сумма кубов цифр = самой цифре.

Я попытался придерживаться алгоритма, но все же есть некоторые ошибки. Пожалуйста, помогите. Я новичок в PLSQL.

Ниже мой код:

   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;

/

1 Ответ

3 голосов
/ 28 ноября 2010

sum - ключевое слово в plsql, его не следует использовать в качестве имени переменной.

Вот решение вашей проблемы:

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;

Решение работаетдля любого INTEGER, я, который является число (38).

...