题目描述
中南CC君最近迷上了素数,素数是指除了1和本身外不能被其他数整除的正整数,2是最小的素数。他发现有一种叫素数串的整数很有意思。它要求从该整数左边开始,每取3位数字构成的整数是素数,剩余的不够3位的整数也是素数。如23311317就是素数串,因为233,113,17都是素数,但是233111就不是,因为111不是素数。给你一个n(1≤n≤101000),你能帮CC君判断一下是素数串整数吗?输入
多组样例。每行一个样例包含一个整数n。输出
对于每一个输入的n,输出一个结果,如果是素数串整数,输出"YES",否则输出"NO"。每个输出占一行。样例输入 Copy
2 3892 100733
样例输出 Copy
YES YES NO
#include<stdio.h> #include<string.h> int b[1005]={0}; int len; char str[1005]; void Eratosthenes(){ b[0]=b[1]=1; for(int i=2;i*i<=1000;i++) if(b[i]==0) for(int j=i*2;j<=1000;j+=i) b[j]=1; } int check(){ int i=0; while(i+3<len){ int n=0; for(int j=i;j<i+3;j++) n=n*10+str[j]-'0'; if(b[n]==1) return 0; i+=3; } int n=0; for(int j=i;j<len;j++) n=n*10+str[j]-'0'; if(b[n]==1) return 0; return 1; } int main(){ Eratosthenes(); while(scanf("%s",str)!=EOF){ len=strlen(str); if(check()==1) printf("YES\n"); else printf("NO\n"); } return 0; }
标签:输出,int,样例,整数,素数,YES From: https://www.cnblogs.com/messing1758954258/p/16966172.html