HDU 2012 소수 판정[입문]
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 156040 Accepted Submission(s): 54969
Problem Description
표현 식 n^2+n+41 에 대해 n 이(x,y)범위 내 에서 정수 치 를 추출 할 때(x,y 포함)(-39<=x
Input
입력 데 이 터 는 여러 그룹 이 있 습 니 다.각 그룹 은 한 줄 을 차지 하고 두 개의 정수 x,y 로 구성 되 며 x=0,y=0 일 때 입력 이 끝 났 음 을 표시 합 니 다.이 줄 은 처리 하지 않 습 니 다.
Output
주어진 범위 내 에서 값 을 추출 할 때 표현 식 의 값 이 소수 라면'OK'를 출력 합 니 다.그렇지 않 으 면'Sorry'를 출력 하 십시오.각 그룹의 출력 이 한 줄 을 차지 합 니 다.
Sample Input
0 1 0 0
OK
问题链接:HDU2012 素数判定。
问题简述:参见上文。
问题分析:
判定一个数是否为素数有各种各样的方法。参见:素性测试算法。这里采用比较简单的试除法来实现,并且将判断一个数是否为素数的功能封装到一个函数中。
程序说明:
本程序采用自顶向下逐步细化的编程方法,程序读起来逻辑清晰十分易懂。
题记:
使用带参数的宏定义,也是值得推荐的好方法。
AC的C语言程序如下:
/* HDU2012 */
#include
#include
#define fun(n) n*n + n + 41
//
int isnotprime(int n)
{
if(n % 2 == 0)
return 1;
int end = sqrt(n), i;
for(i=3; i<=end; i+=2) {
if(n % i == 0)
break;
}
return i > end ? 0 : 1;
}
int main(void)
{
int x, y, i;
while(scanf("%d%d", &x, &y) != EOF) {
//
if(x == 0 && y == 0)
break;
// : x y
for(i=x; i<=y; i++) {
if(isnotprime(fun(i)))
break;
}
//
if(i > y)
printf("OK
");
else
printf("Sorry
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.