(数论) 约数

比较难,没怎么看懂

复制代码
//约数: //如果一个数d是n的一个约数,即d能整除n,那么n/d也能整除n: //求所有约数(除法求约数,o(sqrt(n))) #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,x; set<int>yueshu(int p)//利用set去重并自动排序 { set<int>g; for(int i=1;i<=p/i;i++) if(p%i==0) g.insert(i),g.insert(p/i); //这里我用的set,如果用普通数组的话,要特判一下 //在(p%i==0)中加一句if(i!=n/i) g[]=..,不然的话有可能取得数重复 return g; } int main() { cin>>n; while(n--){ cin>>x; auto res=yueshu(x); for(auto t:res) cout<<t<<" "; cout<<endl; } return 0; }
复制代码
复制代码
//约数个数(基于算术基本定理):https://blog.csdn.net/m0_61855605/article/details/124003504?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%BA%A6%E6%95%B0%E4%B8%AA%E6%95%B0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-124003504.nonecase&spm=1018.2226.3001.4187 //约数之和(筛法)(o(logn)) //1是所有数的约数,2是所有2的倍数的约数,依次类推,所以1-n中 //总共约数的个数和总共倍数的个数是相同的,因为a是b的约数,b就是a的倍数 //那么1就有n个倍数,2有n/2个倍数,1+n/2+n/3+...=n*logn; //约数个数: #include<bits/stdc++.h> using namespace std; const int mod=1e9+7; int n,x; int main() { cin>>n; unordered_map<int,int>hash; while(n--){ cin>>x; for(int i=2;i<=x/i;i++){ while(x%i==0){ x/=i; hash[i]++; } } if(x>1) hash[x]++,cout<<x<<endl; } // for(auto t:hash) cout<<t.first<<" "<<t.second<<endl; long long res=1; for(auto t:hash) res=res*(t.second+1)%mod; cout<<res; return 0; }
复制代码
复制代码
//求一个数的约数个数:https://www.luogu.com.cn/problem/P1403(筛法) #include<bits/stdc++.h> using namespace std; const int N=1e6+10; int f[N],res,n; int main() { cin>>n; for(int i=1;i<=n;i++){ for(int j=i;j<=n;j+=i) f[j]++; res+=f[i]; } cout<<res; return 0; }
复制代码
复制代码
//欧几里得算法(求最大公约数): //如果d能整除a,b,那d就能整除(a*n+b*m); //a和b的最大公约数等于b和a%b的最大公约数 #include<bits/stdc++.h> using namespace std; int n; int gcd(int a,int b) { return b?gcd(b,a%b):a; } int main() { cin>>n; while(n--){ int x,y; cin>>x>>y; cout<<gcd(x,y)<<endl; //stl函数直接求: cout<<__gcd(x,y)<<endl; } }
复制代码

 


__EOF__

本文作者Sakurajimamai
本文链接https://www.cnblogs.com/o-Sakurajimamai-o/p/17478604.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   o-Sakurajimamai-o  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
-- --
点击右上角即可分享
微信分享提示