算法之数学问题

这篇博客探讨了算法在解决数学问题中的应用,包括数字游戏、阶层末尾0的个数计算、数列运算、质数因子分析、素数筛选法以及一些特殊的数学问题,如饥饿的小易问题。通过迭代和数学思维,解决这些问题展示了算法与数学的紧密联系。
摘要由CSDN通过智能技术生成

1.数字游戏

  • 数字游戏
  • 从小到大,根据已知算法,可以得到比最小问题大一级的答案,依次类推,与递归恰恰想法,该题就是一步步迭代得到答案。当然,如果想不到迭代的话,那只能枚举出来,用set容器来存储。

2.求阶层末尾0的个数

  • 求阶层末尾0的个数
  • 这道题是数学问题,实际上可以说是求该阶层中因子为5的个数。有时为了加快速度,可以用以下模板:
while(n){
	ans=ans+n/5;
	n=n/5;
}

3.数列计算

  • 数列计算
  • 这道题也是典型的数学运算和位运算的结合的问题。

4.质数因子

  • 质数因子
  • 这种题数据往往比较大,直接暴力不太友好,这道题巧妙之处不用重新判断的备选质数因子是否是质数因子。

5.素数

  • 求素数
  • 这里考察的是素数筛选法,埃拉托斯特尼。
  • 核心代码:
for(i=2;i*i<=m;i++){
    int k=i;
    for(j=k*i;j<=m;j=k*i){
       arr[j]=1;
       k++;
    }
}
  • 不管i是不是素数,k*i(k>=2)肯定是素数,因此可以一步步求出素数。这里为什么是从k*i开始,这是因为k*i(k>=2&&k<=i-1)已经在前面重复过来,这里可以优化编程。

6.其它数学问题

6.1饥饿的小易

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值