#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int power(int a, int b, int c) {
int result = 1;
while (b > 0) {
if (b % 2 == 1)
result = (result * a) % c;
b /= 2;
a = (a * a) % c;
}
return result;
}
bool is_prime(int n) {
if (n < 2)
return false;
if(n == 2)
return true;
for (int k
= 2; k
<= sqrt(n
); k
++) { if (n % k == 0)
return false;
}
int a = 2;
if (power(a, n-1, n) != 1)
return false;
return true;
}
int main() {
int n;
printf("Nhap mot so nguyen duong: ");
if (is_prime(n))
printf("%d la so nguyen to.\n", n
); else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgppbnQgcG93ZXIoaW50IGEsIGludCBiLCBpbnQgYykgewogICAgaW50IHJlc3VsdCA9IDE7CiAgICB3aGlsZSAoYiA+IDApIHsKICAgICAgICBpZiAoYiAlIDIgPT0gMSkKICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIGEpICUgYzsKICAgICAgICBiIC89IDI7CiAgICAgICAgYSA9IChhICogYSkgJSBjOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7Cn0KCmJvb2wgaXNfcHJpbWUoaW50IG4pIHsKICAgIGlmIChuIDwgMikKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBpZihuID09IDIpCgkgICAgcmV0dXJuIHRydWU7IAoKICAgIGZvciAoaW50IGsgPSAyOyBrIDw9IHNxcnQobik7IGsrKykgewogICAgICAgIGlmIChuICUgayA9PSAwKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIGludCBhID0gMjsKICAgIGlmIChwb3dlcihhLCBuLTEsIG4pICE9IDEpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgcHJpbnRmKCJOaGFwIG1vdCBzbyBuZ3V5ZW4gZHVvbmc6ICIpOwogICAgc2NhbmYoIiVkIiwgJm4pOwoKICAgIGlmIChpc19wcmltZShuKSkKICAgICAgICBwcmludGYoIiVkIGxhIHNvIG5ndXllbiB0by5cbiIsIG4pOwogICAgZWxzZQogICAgICAgIHByaW50ZigiJWQgbGEgaG9wIHNvLlxuIiwgbik7CgogICAgcmV0dXJuIDA7Cn0K