Description
Prime Number Definition
An integer greater than one is called a prime number if its only positive divisors (factors) are one and itself. For instance, 2, 11, 67, 89 are prime numbers but 8, 20, 27 are not.
Semi-Prime Number Definition
An integer greater than one is called a semi-prime number if it can be decompounded to TWO prime numbers. For example, 6 is a semi-prime number but 12 is not.
Your task is just to determinate whether a given number is a semi-prime number.
Input
There are several test cases in the input. Each case contains a single integer N (2 <= N <= 1,000,000)
Output
One line with a single integer for each case. If the number is a semi-prime number, then output "Yes", otherwise "No".
Sample Input
3
4
6
12
Sample Output
No
Yes
Yes
Prime Number Definition
An integer greater than one is called a prime number if its only positive divisors (factors) are one and itself. For instance, 2, 11, 67, 89 are prime numbers but 8, 20, 27 are not.
Semi-Prime Number Definition
An integer greater than one is called a semi-prime number if it can be decompounded to TWO prime numbers. For example, 6 is a semi-prime number but 12 is not.
Your task is just to determinate whether a given number is a semi-prime number.
Input
There are several test cases in the input. Each case contains a single integer N (2 <= N <= 1,000,000)
Output
One line with a single integer for each case. If the number is a semi-prime number, then output "Yes", otherwise "No".
Sample Input
3
4
6
12
Sample Output
No
Yes
Yes
No
题意描述:
输入一个整数,然后判断它的两个因子是否都为素数。
解题思路:
先找出2到1000000之间的所有素数,存入一个vector容器中,然后再将小于1000000的素数的乘积放入另外一个vector容器中,然后输入整数n,查找是否含有n.
解题细节:
注意当乘积大于1000000时要break;还有注意素数的判断!
代码:
#include<bits/stdc++.h>
using namespace std;
vector<int>v;
vector<int>w;
int main()
{
int n,k;
v.clear();
for(int i = 2; i <= 1000000; i++){
if(i != 2 && i % 2 == 0) continue;
for(int j = 3; j * j <= i; j += 2){
if(i % j == 0)
goto RL;
}
v.push_back(i);
RL: continue;
}
for(int i=0;i<v.size();i++)
for(int j=0;j<v.size();j++)
{
k=v[i]*v[j];
if(k<1000000)
{ w.push_back(k);
}
else break;
}
while(cin>>n)
{
if(find(w.begin(),w.end(),n)!=w.end())
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
心得:
还是要学会用STL,想到用vector来代替数组。