您的位置:首页 > Web前端 > JavaScript

问题 K: 网上交作业的烦恼(JSU-ZJJ)

2018-01-21 12:27 337 查看
题目描述

每星期三就要开始网上交汇编作业了,WY早早的开始在网上找好汇编的答案。大家知道课后习题都有序号的。答案上也标有序号(1),(2),(3)……但是老师说了只要交序号为素数的题目。WY准备去删除那些序号非素数的题目在答案里,他发现题目好多手工删除实在费力啊 重复同样动作而且。所以他想请你帮忙解决下。

输入

输入以文件结尾。输入多行数据,最多200行。每行代表一个题目,也就是说题目最多才200题。每个题目都只有字符组成,每个题目字符最多1000000个。题目之间换行.

输出

输出删除了非素数序号的题目。题目之间换行。数据肯定合法。(按例子)

样例输入

(1)ACBDS

(2)Gdfg7&fd

(3)Dguyuy*fd%

(4)Sfdggggg

(5)tttthdsf@

样例输出

(2)Gdfg7&fd

(3)Dguyuy*fd%

(5)tttthdsf@

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

#define N 210

char tt[1000010];

int prime
;
bool is_prime[N + 10];

void sieve(int n)
{
int p = 0;
for(int i = 0; i <= n; i ++)
is_prime[i] = true;
is_prime[0] = is_prime[1] = false;
for(int i = 2; i <= n; i ++)
{
if(is_prime[i])
prime[p ++] = i;
for(int j = 2* i; j <= n; j += i)
{
is_prime[j] = false;
}
}
}

int main()
{
int cnt = 0;
memset(is_prime, 0, sizeof(is_prime));
sieve(210);
/*for(int i = 1; i <= 110; i ++)
{
printf("%d\n",prime[i]);
}*/
while(~scanf("%s",tt))
{
int tm = 0;
for(int i = 1; i <= 4; i ++)
{
if(tt[i] <= '9' && tt[i] >= '0')
tm = tm *10 + tt[i] - '0';
if(tt[i] == ')')
break;
}
if(is_prime[tm])
printf("%s\n",tt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++