职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 969|回复: 4

C语言算法

[复制链接]
流星雨 发表于 2009-8-25 09:29 | 显示全部楼层 |阅读模式
用C语言实现 : 100到500之间的整数
连续相乘(即100*101*102*...*500)最后的结果中有多少个“0”
谢谢:)
→有几坏← 发表于 2009-8-25 09:29 | 显示全部楼层

C语言算法

100 到 500 连续相乘末尾有多少连续的 0

#include <stdio.h>

int endzero(int n);

int main(void)
{
printf("%d", endzero(500) - endzero(99));
}

int endzero(int n)
{
if (n < 5)
return 0;

return n / 5 + zeronum(n / 5);
}
阿佳 发表于 2009-8-25 09:29 | 显示全部楼层

C语言算法

对每个数分解质因数(这总会吧)
统计出2和5各有几个
若2有a个
5有b个
则末尾0有min(2,5)个
逆风而行 发表于 2009-8-25 09:30 | 显示全部楼层

C语言算法

#include <stdio.h>
void main()
{
int y=0;
int m=0;
for (int i=100;i<=500;i++)
{
m=i;
while (0==m%5)
{
y++;
m=m/5;
printf("%d\n",i);
}
}
printf("有%d个零\n",y);
}
输出

有102个零
小滋 发表于 2009-8-25 09:30 | 显示全部楼层

C语言算法

#include <stdio.h>
int Find(int p,int n)//这个函数统计整数n中有几个因子p
{
int count=0;
while(n%p==0)
{
n/=p;
count++;
}
return count;
}
int main()
{
int i;
int sum2=0,sum5=0;
int count;
for(i=100;i<=500;i++)
{
sum2+=Find(2,i);//找到因子2的个数
sum5+=Find(5,i);//找到因子5的个数
}
if(sum2<sum5)
count=sum2;
else
count=sum5;//10的个数即2和5中较少的个数
printf("there are %d zeros\n",count);
return 0;
}
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 17:35 , Processed in 0.109599 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表