Mam zadanie, gdzie należy posortować liczby całkowite od 1 do n według liczby dzielników. Napisałem kod, który u mnie działa tylko dla bardzo małych n (nie wiem, dlaczego). Proszę o pomoc.
#include<iostream>
#include<algorithm>
using namespace std;
bool division (int a, int b) {
int d_a=0; //liczba dodatnich dzielnikow liczby a
int d_b=0; //liczba oddatnich dzielnikow liczby b
for (int i=1; i<=a; i++) {
if (a%i==0) d_a++;
}
for (int i=1; i<=b; i++) {
if (b%i==0) d_b++;
}
if (d_a>d_b) return a>b;
if (d_a<d_b) return a<b;
if (d_a==d_b) return a<b;
}
int main () {
int n;
cin>>n;
int numbers[n];
for (int i=0; i<n; i++) {
numbers[i]=i+1;
}
sort(numbers, numbers+n, division);
for (int i=0; i<n; i++) {
cout<<numbers[i]<<endl;
}
return 0;
}