思路如下:
#include<bits/stdc++.h>
using namespace std;
int a[100];
const int N=78120;
//1.暴力解法
void fun1(int n){
int sum=0;
for(int i=1;i<n+1;i++){
if(n%i==0)
sum++;
}
cout<<sum<<endl;
}
//2.sqrt(n)的解法
void fun2(int n){
int sum=0;
int r=(int)sqrt(1.0*n);
if(r*r == n){
sum++;
r--;
}
for(int i=1;i<=r;i++){
if(n%i==0)
sum+=2;
}
cout<<sum<<endl;
}
//3.质因数分解
void fun3(int n){
int t=1;
for(int i=2;i<=sqrt(1.0*n);i++){
while(n%i==0){
a[i]++;
n/=i;
}
t*=(a[i]+1);
}
if(n>1){
a[n]++;
t*=(a[n]+1);
}
cout<<t<<endl;
}
int main(){
fun1(N);
fun2(N);
fun3(N);
return 0;
}
本文介绍了三种不同的算法来计算一个整数的所有约数个数:暴力解法、sqrt(n)解法及质因数分解法,并提供了每种方法的具体实现代码。
https://www.bilibili.com/video/BV1vb4y1H79X?spm_id_from=333.999.0.0
1079

被折叠的 条评论
为什么被折叠?



