当前位置: 首页 > >

求约数、约数个数、约数之和

发布时间:

试除法 求约数

#include
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long long
#define forr(i,a,b) for(int i=a;i<=b;i++)
vector pri(int n){
vector res;
forr(i,1,n/i){
if(n%i==0){
res.push_back(i);
if(i!=n/i)
res.push_back(n/i);
}
}
sort(res.begin(),res.end());
return res;
}
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
auto res=pri(n);
for(auto t:res){
cout< }
cout< }
return 0;
}

约数个数

#include
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define forr(i,a,b) for(int i=a;i<=b;i++)
unordered_map pri;
const int mod=1e9+7;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
forr(i,2,n/i){
while(n%i==0){
n/=i;
pri[i]++;
}
}
if(n>1)pri[n]++;
}
ll res=1;
for(auto p:pri){
res=res*(p.second+1)%mod;
}
cout< return 0;
}

约数之和

#include
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define forr(i,a,b) for(int i=a;i<=b;i++)
unordered_map pri;
const int mod=1e9+7;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
forr(i,2,n/i){
while(n%i==0){
n/=i;
pri[i]++;
}
}
if(n>1)pri[n]++;
}
ll res=1;
for(auto p:pri){
ll a=p.first,b=p.second;
ll tem=1;
while(b--) tem=(tem*a+1)%mod;
res=res*tem%mod;
}
cout< return 0;
}



友情链接: 时尚网 总结汇报 幼儿教育 小学教育 初中学习资料网