Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
Bilangan prima dalam C
Periksa pembagi hingga akar kuadrat dan tangani bilangan di bawah dua dengan benar.

Bilangan prima adalah bilangan bulat lebih dari satu dengan tepat dua pembagi positif. Nol, satu, dan bilangan negatif bukan prima. Jika N komposit, setidaknya satu faktornya tidak melebihi akar kuadratnya.
Singkirkan bilangan genap kecuali dua, lalu periksa pembagi ganjil. Untuk bilangan positif besar, kondisi divisor <= N / divisor menghindari overflow divisor * divisor. Berhentilah ketika pembagi ditemukan.
Uji 1, 2, kuadrat seperti 49, dan sebuah bilangan prima. Pembagian percobaan membutuhkan waktu O(sqrt(N)) dan ruang tambahan O(1).
Kode C
#include <stdio.h>
#include <stdbool.h>
bool is_prime_optimized(int n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
// Check factors 6k +/- 1 up to sqrt(n)
for (int i = 5; (long long)i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
int main(void) {
int test_numbers[] = {1, 2, 17, 25, 29, 49, 97, 100};
int total = sizeof(test_numbers) / sizeof(test_numbers[0]);
printf("--- Prime Number Verification ---\n");
for (int i = 0; i < total; i++) {
int val = test_numbers[i];
printf("%3d -> %s\n", val, is_prime_optimized(val) ? "PRIME" : "NOT prime");
}
printf("\nPrimes between 1 and 50:\n");
for (int i = 1; i <= 50; i++) {
if (is_prime_optimized(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}Buka di kompilerKeluaran yang diharapkan
--- Prime Number Verification --- 1 -> NOT prime 2 -> PRIME 17 -> PRIME 25 -> NOT prime 29 -> PRIME 49 -> NOT prime 97 -> PRIME 100 -> NOT prime Primes between 1 and 50: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Pertanyaan umum
Mengapa kode dan keluarannya tetap dalam bahasa Inggris?
Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.