Saya mencoba mendapatkan jumlah pembagi bilangan bulat 64 bit (lebih besar dari 32 bit)
Cara pertama saya (untuk bilangan kecil) adalah dengan membagi bilangan tersebut hingga diperoleh bilangan 1, hitung banyaknya bilangan prima yang cocok dan gunakan rumus (1 + P1)(1+ P2)..* (1 + Pn) = Jumlah pembagi
Misalnya:
24 = 2*2*2*3 = 2^3 * 3^1
==> (3 + 1)*(1 + 1) = 4 * 2 = 8 pembagi
public static long[] GetPrimeFactor(long number)
{
bool Found = false;
long i = 2;
List<long> Primes = new List<long>();
while (number > 1)
{
if (number % i == 0)
{
number /= i;
Primes.Add(i);
i = 1;
}
i++;
}
return Primes.ToArray();
}
Namun untuk bilangan bulat besar, metode ini memerlukan banyak iterasi. Saya menemukan metode bernama Saringan kuadrat untuk membuat faktorisasi menggunakan angka persegi. Sekarang menggunakan skrip saya ini bisa lebih mudah karena jumlahnya jauh lebih kecil.
Pertanyaan saya adalah, bagaimana cara menerapkan Saringan Kuadrat ini?