題目敘述
A circular prime is a prime number that remains prime as each leftmost digit (most significant digit), in turn, is moved to the right hand side. For instance, the number 19937 is a circular prime, since all numbers in the sequence 19937, 99371, 93719, 37199 and 71993 are prime numbers.
Your objective is to write a program that, given a range, computes the number of circular primes in that range. Input The input consists of a sequence of pairs of integers i and j, with one pair of integers per input line. All integers will be less than 1,000,000 and greater or equal to 100. You can assume that in any pair i is lesser or equal than j.
You should process all pairs of integers, and for each such pair, count the number of circular primes between i and j, including i and j. Input is terminated by a line just with the number ‘-1’. Output For each pair of input integers, defining a range, the output should be: ‘No Circular Primes.’ (if there are no circular primes in the range), ‘1 Circular Prime.’ (if only one circular prime exists in the range), or ‘n Circular Primes.’ (if there are n circular primes in the range, and n is greater than one).
想法
先建好Circular表,然後再去做比對。因為質數的性質(一個合數n一定可以拆成一個小於根號n的 * 一個大於根號n的),所以1000000只要找1000內是否有它的因數即可。 而且只需要判斷是否是質數的倍數即可(線性篩法),做完再用字串去做DP。
作法參考: A - CIRCULAR
|