数论求F(n)

这篇博客探讨了如何求解数论问题F(n) = n/1 + n/2 + ... + n/n - n,当n非常大时,暴力计算会超时。作者通过举例分析了数列的规律,提出了两种方法:法1是通过计算后面的项再累加前面的项,法2则是利用未知的快速幂算法。文章提供了相关链接以获取更多细节。
摘要由CSDN通过智能技术生成

数论求F(n)

题意:

f(5,1)=4,即5/1=5,5-1=4;
f(8,2)=3,即8/2=4,4-1=3;
f(7,3)=1,即7/3=2,2-1=1;
f(5,4)=0,即5/4=1,1-1=0;

求:

F(n)=f(n,1)+f(n,2)+f(n,3)+…+f(n,n)
=n/1+n/2+…+n/n-n

思路:

n非常大,暴力会超时,找数试找规律,练思维的题
这里先求:n/1+n/2+…+n/n (每个数的结果都是整数,有小数的舍弃小数部分)
例:F(9)=n/1+n/2+n/3+n/4+n/5+n/6+n/7+n/8+n/9
9 4 3 2 1 1 1 1 1
相差 5 1 1 1
5个1,1个2,1个3,1个4
例:F(12)=n/1+n/2+n/3+n/4+n/5+n/6+n/7+n/8+n/9+n/10+n/11+n/12
12 6 4 3 2 2 1 1 1 1 1 1
相差 6 2 1 1
6个1,2个2,1个3,1个4

法1:结论:我们可以先计算后面的,然后再加上前面的
有了这个规律:我们可以写出减少时间短的代码

法2:(不理解)
https://blog.csdn.net/liverpippta/article/details/8216071
*/

1: 
#include<stdio.h>
int main()
{
   
	int tt;
	scanf("%d",&tt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值