求解一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