天天看点

AcWing 869. 试除法求约数

约数专题

求一个数的约数个数

链接(​​https://www.acwing.com/activity/content/problem/content/938/)​​

代码:

#include<bits/stdc++.h>
using namespace std;
#define cout(x) printf("%d",x)
#define cin(x) scanf("%d",&x)
#define ll long long
int fun(int x){
  vector<int>v;
  for(int i=1;i<=x/i;i++){//!
    if(x%i==0){
      v.push_back(i);
      if(i!=x/i)v.push_back(x/i);
    }
  }
  sort(v.begin(),v.end());
  for(int i=0;i<v.size();i++){
    cout<<v[i]<<" ";
  }
}
int main(){
  int n,a;
  cin>>n;
  for(int i=0;i<n;i++){
    cin>>a;
    fun(a);
    cout<<endl;
  }
  return 0;
}

      

注意

1.i<=x/i

2.用vector省空间

3.vector的用法v.begin和v.end

4.注意if(i!x/i)否则会重(25=5*5)

继续阅读