회문질수---(질수의 발생)

3550 단어
제목 설명
151은 하나의 질수이자 하나의 회문수이기 때문에 151은 회문수이다.
프로그램 하나를 써서 범위 [a, b](5<=a입력 출력 형식
입력 형식:
 
첫 번째 줄: 두 개의 정수 a와 b.
 
출력 형식:
 
회문 질수의 목록을 한 줄씩 출력합니다.
 
출력 샘플 가져오기
샘플 입력 #1: 복사
5 500

출력 예제 #1: 복사
5
7
11
101
131
151
181
191
313
353
373
383

설명
Hint 1: Generate the palindromes and see if they are prime.
제시1: 모든 회문수를 찾아서 그것들의 질수(소수)를 판단한다.
Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.
힌트2: 정확한 회문수를 만들려면 아래와 같은 순환이 몇 개 필요할 수도 있다.
제목 번역은 NOCOW에서 나왔다.
USACO Training Section 1.5
길이가 5인 회신 수 생성:
for (d1 = 1; d1 <= 9; d1+=2) {    //          
     for (d2 = 0; d2 <= 9; d2++) {
         for (d3 = 0; d3 <= 9; d3++) {
           palindrome = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;//(     ...)
         }
     }
 }
#include
#define N_7 10000000
#define N_6 1000000
#define N_5 100000
#define N_4 10000
int isprime(int n){
    int i;
	for(i=2;i*i<=n;i++)
	if(n%i==0)
	return 0;
	return 1;
}

int main(){
    long long int d1,d2,d3,d4,a,b,num,t,n=0;
	scanf("%lld %lld",&a,&b);
	t=b;
	while(b>0){
	    b/=10;
		n++;
	}
	b=t;
	if(n>=1)
	  for(d1=5;d1<=9;d1+=2){
		if(d1<=b&&d1>=a&&isprime(d1))
		   printf("%lld
",d1); else if(d1>b) goto L; } if(n>=2) for(d1=1;d1<=9;d1+=2){ if(d1*10+d1<=b&&d1*10+d1>=a&&isprime(d1*10+d1)) printf("%lld
",d1*10+d1); else if(d1*10+d1>b) goto L; } if(n>=3){ for(d1=1;d1<=9;d1+=2) for(d2=0;d2<=9;d2++){ num=d1*100+d2*10+d1; if(num<=b&&num>=a&&isprime(num)) printf("%lld
",num); else if(num>b) goto L; } for(d1=1;d1<=9;d1+=2) for(d2=0;d2<=9;d2++){ num=d1*1000+d2*100+d2*10+d1; if(num<=b&&num>=a&&isprime(num)) printf("%lld
",num); else if(num>b) goto L; } } if(n>=5){ for(d1=1;d1<=9;d1+=2) for(d2=0;d2<=9;d2++) for(d3=0;d3<=9;d3++){ num=d1*N_4+d2*1000+d3*100+d2*10+d1; if(num<=b&&num>=a&&isprime(num)) printf("%lld
",num); else if(num>b) goto L; } for(d1=1;d1<=9;d1+=2) for(d2=0;d2<=9;d2++) for(d3=0;d3<=9;d3++){ num=d1*N_5+d2*10000+d3*1000+d3*100+d2*10+d1; if(num<=b&&num>=a&&isprime(num)) printf("%lld
",num); else if(num>b) goto L; } } if(n>=7){ for(d1=1;d1<=9;d1+=2) for(d2=0;d2<=9;d2++) for(d3=0;d3<=9;d3++) for(d4=0;d4<=9;d4++){ num=d1*N_6+d2*N_5+d3*N_4+d4*1000+d3*100+d2*10+d1; if(num<=b&&num>=a&&isprime(num)) printf("%lld
",num); else if(num>b) goto L; } for(d1=1;d1<=9;d1+=2) for(d2=0;d2<=9;d2++) for(d3=0;d3<=9;d3++) for(d4=0;d4<=9;d4++){ num=d1*N_7+d2*N_6+d3*N_5+d4*N_4+d4*1000+d3*100+d2*10+d1; if(num<=b&&num>=a&&isprime(num)) printf("%lld
",num); else if(num>b) goto L; } } L:; return 0; }

좋은 웹페이지 즐겨찾기