失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何快速求一个数的所有因子数 c/c++

如何快速求一个数的所有因子数 c/c++

时间:2020-04-20 23:41:16

相关推荐

如何快速求一个数的所有因子数  c/c++

根号n的时间内求一个数的所有因子数

#include<bits/stdc++.h>using namespace std;int main() {int a;//分解a的因子数int b[100005]; // 将a的所有因子数保存在b数组 scanf("%d",&a);int z=0;for(int i=1;i*i<=a;i++) {if(a%i==0) {b[z++]=i; if(i!=a/i)//两个因子数不相等则保存下来b[z++]=a/i; } }sort(b, b+z); //将因子数从小到大排序然后输出for(int i=0;i<z;i++) {printf("%d ",b[i]);} return 0; }

这样便可以在sqrt(n)(根号n)时间内求出一个数的所有因数并输出

下面的代码则也是在sqrt(n)求一个数的所有因子总个数(不重复),和上面代码类似

#include<bits/stdc++.h>using namespace std;int main() {int a;scanf("%d",&a);int ans=0;//ans是求a所有因子数的总个数 for(int i=1;i*i<=a;i++) {if(a%i==0) {ans++;if(i!=a/i) {//两个因子数不相等ans++;}}}printf("%d\n",ans); return 0; }

如果觉得《如何快速求一个数的所有因子数 c/c++》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。