Pascal【自定义函数题目】

Pascal【自定义函数题目】做一道给10悬赏,谢谢!!!!!!!!急!!!!!(每一步最好有说明)求数字的乘积根。正整数的数字乘积这样规定:这个正整数中非零数字的乘积。... Pascal【自定义函数题目】
做一道给10悬赏,谢谢!!!!!!!!急!!!!!
(每一步最好有说明)
求数字的乘积根。正整数的数字乘积这样规定:这个正整数中非零数字的乘积。例如整数999的数字乘积为9*9*9,得到729;729的数字乘积为7*2*9,得到126;126的数字乘积为1*2*6,得到12;12从数字乘积为1*2,得到2。如此反复取数字的乘积,直至得到一位数字为止。999的数字乘积根是2。编程输入一个长度不超过100位数字的正整数,输出计算数字乘积根的每一步结果。
输入
3486784401
输出
3486784401
516096
1620
12
2

如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,从给出的数据中统计出既是回文数又是素数的数的个数。
样例输入
7 12 10 11 121 1331 10301
样例输出
3
展开
 我来答
Suck3r
2015-07-17 · TA获得超过924个赞
知道小有建树答主
回答量:689
采纳率:50%
帮助的人:240万
展开全部
对不起,给代码是不好的,我先讲一讲算法。我的算法不用函数,你可以改一改
1、题目中说长度不超过100位,所以只能用字符做,
repeat
read(a);//a是字符
b:=ord(a)-40;//转化为数字
s:=s*b;//累乘
until eoln;//直到一行结束
这是核心代码,外面在套一个repeat,until就是直到s<10为止,注意s清零

2、这道题,,,加函数也可以不加也罢
输入一个数,不可以用字符串,要将他转换为字符串。
readln(n)//n是整形
val(n,s);将n转换为字符串
{然后很简单,设j为length(s),i就是1,只要i和j不碰头(即i和j相差1以上),i+1,j-1,碰头了就结束了,没碰头,就是说中途发现不一样了,就不是回文数}
repeat
输入
设j为length(s),i就是1
while i和j相差不超过1 do//j就是s的长度,从最后开始搜索
begin
如果i和j发现不同
begin
哨兵改为真;//t就是哨兵,即跳出循环后还要跳出
跳出循环
end;
end;
如果t成是真,那么跳出本次循环;//如果这个数是true,那么说明5行之前的判断成立,后面
//就不需要判断了,直接跳出本次循环,即continue
判断素数
如果是素数,那么恭喜,找到了,
计数器+1;

until eoln;//第一个数字别管,因为只有一行,一行结束就读完
输出计数器

如果要加函数,就要把中间的代码改为一个回文函数和一个素数函数,
判断函数一般从2to round(trunc(n)) do 这里就不写了
如果不懂,可以追问,请采纳
追问

程序太多追问字数超限,所以发图。(请问为什么一直输出0? 回文素数)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式