《ACM程序设计》书中题目 R
来源:互联网 发布:马小丝的淘宝 编辑:程序博客网 时间:2024/06/05 10:21
题目简要:
这道题主要就是个筛素数的问题···
如果大于1的整数的正的除数(因子)为1,则称为质数。 例如,2,11,67,89是素数,但8,20,27不是。
半主数字定义
如果大于1的整数可以被分解为两个质数,则称为半质数。 例如,6是半质数,但12不是。
您的任务只是确定给定的数字是否是半质数。
输入
在输入中有几个测试用例。 每种情况包含单个整数N(2≤N≤1,000,000)
输出
每行一个整数。 如果数字是半质数,则输出“是”,否则输出“否”。
例如:
Sample Input
3
4
6
12
Sample Output
Yes
Yes
No
解题思路:
······好吧,我记得老师上课的时候提到过,不过具体的方法忘记了····无奈,用自己想到的办法总是超时,于是用了题解上的方法。先找出素数,再通过循环判断这个数是不是半素数就好啦。
附代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i,j;
vector <int> b;
for(int i=2;i<=500000;i++)
{
if(i!=2&& i%2==0)
continue;
for(int j=3;j*j<=i;j+=2)
{
if(i%j==0)goto p;
}
b.push_back(i);
p:continue;
}
set <int> s;
for (i=0;i<b.size();i++)
{
for (j=0;j<b.size();j++)
{
if (b[i]*b[j]<1000000)
s.insert(b[i]*b[j]);
else
break;
}
}
int n;
set<int>::iteratorit;
while (cin>>n)
{
it=s.find(n);
if (it!=s.end())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
解题感受:
其实还是没有太看懂课本上筛素数的方法,回去仔细研究去,可是后来我去网上找了百度百科里的筛素数的方法,我一开始想到的方法和百度的方法其实是一样的,然而解决不了超时的问题·····
- 《ACM程序设计》书中题目R-18
- 《ACM程序设计》书中题目 R
- 《ACM程序设计》书中题目--problem r
- 《ACM程序设计》书中题目 R
- 《ACM程序设计》书中题目 R
- 《ACM程序设计》书中题目R
- acm程序设计书中题目r题解析
- 《ACM程序设计》书中题目R(半素数的判定)
- 《ACM程序设计》书中题目
- acm书中题目 r-18
- 《ACM程序设计》书中题目--problem j
- 《ACM程序设计》书中题目 J
- 《ACM程序设计》书中题目O-15
- 《ACM程序设计》书中题目M-13
- 《ACM程序设计》书中题目--problem o
- 《ACM程序设计》书中题目--problem u
- 《ACM程序设计》书中题目―K
- 《ACM程序设计》书中题目 U
- Oracle Form Builder问题集锦(第一弹:连接报错:ORA-12154:TNS:无法解析指定的连接标识符)
- 选择排序
- cas 4.2.1
- 请设计输出实数的格式,包括:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用"6.2f"格式输出。
- Hibernate之旅二:Hibernate简介
- 《ACM程序设计》书中题目 R
- 测试基础---测试策略与方法01
- Unity3D说明文档翻译-The Game View
- 三角形内部线性插值方法
- Django Filter get
- leetcode 141. Linked List Cycle
- 剑指Offer 10 二进制中1得个数
- Word Search
- Android 非静态内部类/匿名类引起的内存泄漏