wikioi 2849 素数判定 三 (筛法求质)
wikioi 2849 素数判定 3 (筛法求质)
题解:
方法二、简单算法
题目描述 Description
输入一个正整数x(3<=x<=100000),判断x是否是质数,如果是质数则输出信息“prime”,否则输出“composite”。
输入描述 Input Description
一行一个正整数
输出描述 Output Description
输出prime或者composite
样例输入 Sample Input
13
样例输出 Sample Output
prime
数据范围及提示 Data Size & Hint
大于2并且小于100000
方法一、筛法求质
#include <iostream> #include <cstring> #include <cmath> using namespace std; bool flag[100005]; int genPrime(int max) { memset(flag, true, sizeof(flag)); for(int i=2; i<=sqrt(max); i++) { for(int j=i; j<=max; j++) { if(i*j<=max) flag[i*j]=false; else break; } } } int main() { genPrime(100000); int x; cin >> x; if(flag[x]) cout << "prime"; else cout << "composite"; return 0; }
方法二、简单算法
#include<iostream> #include<math.h> using namespace std; int main() { int n,i,k; cin>>n; k=sqrt(n); for(i=2;i<=k;i++) { if(n%i==0) { cout<<"composite"<<endl; return 0; } } cout<<"prime"<<endl; return 0; }