水题,但由于long long不用调用sqrt,所以for循环的时候要用i*i<=num的形式
#include<stdio.h>
#include<math.h>
static int is_prime(long long num)
{
if (num == 1)
return 0;
long long i;
for (i = 2; i * i <= num; i++)
if (num % i == 0)
return 0;
return 1;
}
int main()
{
int b, N;
while (scanf("%d %d", &b, &N) != EOF)
{
long long res = 0, base = 1;
int i;
for (i = 0; i < N; i++)
{
res += base;
base *= b;
}
printf(is_prime(res) ? "YES\n" : "NO\n");
}
return 0;
}