版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN___CSDN/article/details/82933146
题目链接:杭电OJ 2012
思路很简单,但是有一种高效算法显示编译错误,不知道为什么
运行环境:VS2017
AC代码:
#include <stdio.h>
#include <math.h>
int main()
{
int x, y, i,j,num,count,t;
while (scanf_s("%d%d", &x, &y) != EOF)
{
count = 0;
if (x == 0 && y == 0)
{
break;
}
if (x > y)
{
t = x; x = y; y = t;
}
for (i = x; i <= y; i++)
{
num = i * i + i + 41;
for (j = 2; j <= sqrt((double)num); j++)
{
if (num%j == 0)
{
break;
}
}
if (j > sqrt((double)num))
{
count++;
}
}
if (count == y - x + 1)
{
printf("OK\n");
}
else
{
printf("Sorry\n");
}
}
return 0;
}
Compilation Error:
#include <stdio.h>
#include <math.h>
bool isprime(int num)
{
if (num == 2 || num == 3)
return 1;
if (num % 6 != 1 && num % 6 != 5)
return 0;
int tmp = sqrt((double)num);
for (int i = 5; i <= tmp; i += 6)
if (num %i == 0 || num % (i + 2) == 0)
return 0;
return 1;
}
int main()
{
int x, y, i,num,count,t;
while (scanf_s("%d%d", &x, &y) != EOF)
{
count = 0;
if (x == 0 && y == 0)
{
break;
}
if (x > y)
{
t = x; x = y; y = t;
}
for (i = x; i <= y; i++)
{
num = i * i + i + 41;
if (!isprime(num))
{
break;
}
else
{
count++;
}
}
if (count == y - x + 1)
{
printf("OK\n");
}
else
{
printf("Sorry\n");
}
}
return 0;
}