日期:2014-05-17  浏览次数:20904 次

求解一PL/SQL 过程问题 好纠结
题目如下
编写一个算命的过程,接收输入的一个生日(yyyymmdd),每2位相加取个位,最后得到一位数字,此数字为偶数(命好),为质数(一般),否则为(命运悲惨).算法如下:
                  19850324
 0735356
  708881
   78669
    5425
     967
      53
       8  -------------------偶数,命好

好纠结 刚学ORACLE 的过程和函数不是很会 ,求解谢谢了...
------最佳解决方案--------------------
质数应该是除不了吧。上面好像弄反了。
------其他解决方案--------------------
public static void testLife() {
String oldNum = "19850324";
String newNum = "";
int firstNum = 0;
int secondNum = 0;
while (oldNum.length() > 1) {
for (int i = oldNum.length(); i > 1; i--) {
firstNum = Integer.parseInt(oldNum.substring(i - 1, i));
secondNum = Integer.parseInt(oldNum.substring(i - 2, i - 1));

if ((firstNum + secondNum) > 9) {
newNum = String.valueOf(firstNum + secondNum).substring(1)
+ newNum;
} else {
newNum = firstNum + secondNum + newNum;
}
}
oldNum = newNum;
newNum = "";
} ;

switch(Integer.parseInt(oldNum))
{
case 0:
System.out.println("命好");
break;
case 2:
System.out.println("命好");
break;
case 4:
System.out.println("命好");
break;
case 6:
System.out.println("命好");
break;
case 8:
System.out.println("命好");
break;
case 9:
System.out.println("命一般");
break;
default:
System.out.println("命运悲惨");
break;
}

}
java测试下哈哈,不知道怎么算质数只能这样判断。
------其他解决方案--------------------
我开创先河了 呵呵
------其他解决方案--------------------
这个好弄吧,算法都给了。
------其他解决方案--------------------
写了一段代码,有错,没改出来,先贴出来明天在看看了~~
查出了错误说下理由啊 谢谢

-- test code
DECLARE
v_birthday VARCHAR2(8):='19999999';
v_res      VARCHAR2(8):='';
v_length   NUMBER(2):=0;
BEGIN
    LOOP
        SM_PRC(v_birthday,v_res);
        v_virthday:=v_res;
        BEGIN
            SELECT length(v_virthday) INTO v_length FROM dual;
        END;
        EXIT WHEN v_length=1;
    END LOOP;
    dbms_output.put_line(v_res);
END;

--procedure
CREATE OR REPLACE PROCEDURE SM_PRC(inp_birthday IN VARCHAR2, v_res OUT VARCHAR2) IS
CURSOR getTwoNumAdd(v_data VARCHAR2, v_length NUMBER) IS
SELECT MOD((num+SECOND),10)
FROM(
    SELECT num,lead(num) over(ORDER BY i_level) SECOND