【ACM】杭电OJ 2012。

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/CSDN___CSDN/article/details/82933146