您的位置:首页 > 其它

USACO:1.5.3 Superprime Rib 特殊的质数肋骨

2016-03-02 20:17 309 查看
http://218.5.5.242:9018/JudgeOnline/problem.php?id=1262

农民约翰母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说:7 3 3 1全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。7331 被叫做长度 4 的特殊质数。

写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数。数字1不被看作一个质数。

#include <stdio.h>
#include <math.h>
const int prime[]={0,2,3,5,7};
const int other[]={0,1,3,7,9};
short int n;
_Bool is_prime(int x){
for(int i=2;i<=sqrt(x);i++)
if(!(x%i))
return 0;
return 1;
}
void search(int num,int step){
if(step==n){
printf("%d\n",num);
return;
}
int Num;
for(int i=1;i<=4;i++){
Num=num*10+other[i];
if(is_prime(Num))
search(Num,step+1);
}
}
int main(){
scanf("%d",&n);
if(n==1){
printf("2\n3\n5\n7\n");
return 0;
}
for(int i=1;i<=4;i++)
search(prime[i],1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: