HDU 2012 소수 판정[수론 소수 판정]
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 169265 Accepted Submission(s): 59989 Problem 설명 표현 식 n^2+n+41 에 대해 n 이(x,y)범위 내 에서 수 치 를 취 할 때(x,y 포함)(-39<=x Input 입력 데 이 터 는 여러 그룹 이 있 습 니 다.각 그룹 은 한 줄 을 차지 하고 두 개의 정수 x,y 로 구성 되 며 x=0,y=0 일 때 입력 이 끝 났 음 을 표시 합 니 다.이 줄 은 처리 하지 않 습 니 다. 출력 은 주어진 범위 내 에서 값 을 추출 합 니 다.표현 식 의 값 이 소수 라면"OK"를 출력 합 니 다.그렇지 않 으 면"Sorry"를 출력 하 십시오.각 그룹의 출력 은 한 줄 을 차지 합 니 다. Sample Input 0 1 0 0 Sample Output OK
제목:
구조 가 소수 인지 아 닌 지 를 판정 하 는 함수 입 니 다.나중에 소수 판정 문제 가 발생 하면 이 함수 copy 를 직접 사용 할 수 있 습 니 다.
판단 은 시험 나눗셈 을 채택 한다.
소수 판정 함수:
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;
}
이 문제 의 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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU 5608] functionProblem Description There is a function f(x),which is defined on the natural numbers set N,satisfies the following eqaut...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.