不要被阶乘吓倒(1)

来源:互联网 发布:js中div 编辑:程序博客网 时间:2024/04/30 15:26
package com.demo;
/**
 * 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!的末尾有两个0。
 * 此问题不需要计算出N!的值,因为可能溢出。
 * 我们可以从哪些数相乘能得到10这个角度来考虑,问题就简单了
 * @author ying
 *
 */
public class Factorial1 {
/**
* 要计算结果,最简单的方法就是计算i(i=1,2,...,N)的因式分解中5的指数,然后求和
* @param n
* @return返回字符串格式“N!的末尾有ret个0。”
*/
public String method1(int n){
int ret = 0;
int j = 0;
for(int i = 1;i <= n;i++){
j = i;
while(j%5==0){
ret++;
j /= 5;
}
}
return "N!的末尾有"+ret+"个0。";
}
/**
* 公式:Z=[N/5]+[N/(5*5)]+[N/(5*5*5)]+...
* 公式中Z表示结果,[N/5]表示不大于N的数中5的倍数贡献一个5,[N/(5*5)]表示不大于N的数中(5*5)的倍数再贡献一个5......
* @param n
* @return返回字符串格式“N!的末尾有ret个0。”
*/
public String method2(int n){
int ret = 0;
while(n!=0){
ret += n/5;
n/=5;
}
return "N!的末尾有"+ret+"个0。";
}
}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 月经推迟16天了怎么办 月经半年没来了怎么办 月经推迟两个月了还不来怎么办 四个月月经不来怎么办 快两个月没来月经了怎么办 月经停了两个月怎么办 别人诬告我我该怎么办 有人造谣我我该怎么办 宝宝晚上不睡觉哭闹怎么办 婴儿晚上不睡觉哭闹怎么办 2月宝宝排便困难怎么办 3岁宝宝老是哭闹怎么办 2岁了囟门闭合晚怎么办 宝宝卤门闭合慢怎么办 手经常碰水脱皮怎么办 迅雷文件已移除怎么办 手机不读sd卡怎么办 g买卖卖错账号怎么办 森林被野人拖走怎么办 我的世界没有羊怎么办 黑魂3杀死铁匠后怎么办 幻境7下8走错了怎么办 换了手机号微信怎么办 微信游戏没了怎么办 找sf网站被劫持怎么办 护发精油抹多了怎么办 用了护发素洗头怎么办 电脑c盘空间不足怎么办 把水蛭吃肚子里怎么办 不小心喝到蚂蟥怎么办 水蛭喝进肚子里怎么办 蚂蝗钻入皮肤里怎么办 孩子屁眼红疼怎么办啊 宝宝屁眼红疼怎么办4岁 屁股眼上火很疼怎么办 屁股上火了很痛怎么办 脚被虫子咬肿了怎么办 人在低谷的时候怎么办 支付宝忘了密码怎么办 忘了支付宝账号怎么办 支付宝账号丢了怎么办