1047题目:
http://ac.jobdu.com/problem.php?pid=1047
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stack>
#include <queue>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
using namespace std;
bool judge(int a){
if(a<=1)
return false;
int sqr=(int)sqrt(a)+1;
for(int i=2;i<=sqr;i++){
if(a%i==0)
return false;
}
return true;
}
int main(){
int n;
while(cin>>n){
puts(judge(n)? "yes" : "no");
}
}
/**************************************************************
Problem: 1047
User: zhouyudut
Language: C++
Result: Accepted
Time:0 ms
Memory:1532 kb
****************************************************************/
<=1的数,都要考虑进去
1163题目:
http://ac.jobdu.com/problem.php?pid=1163
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stack>
#include <queue>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
using namespace std;
bool prime[10010];//素数
void filter(int t){
int temp;
for(int i=2;i<=10000;i++){
temp=t*i;
if(temp>10000)
break;
prime[temp]=false;
}
}
int main(){
for(int i=2;i<=10000;i++)
prime[i]=true;
int sqr=(int)sqrt(10000)+1;
for(int i=2;i<=sqr;i++){
if(prime[i]==false)
continue;
filter(i);
}
int n;
int flag=0;
while(cin>>n){
flag=0;
for(int i=11;i<n;i+=10){
if(i>=n)
break;
if(prime[i]==true){
if(flag==0)
{
cout<<i;
flag++;
}
else{
cout<<' '<<i;
}
}
}
if(flag==0)
cout<<"-1";
cout<<endl;
}
}
/**************************************************************
Problem: 1163
User: zhouyudut
Language: C++
Result: Accepted
Time:0 ms
Memory:1528 kb
****************************************************************/
筛选法,
1163题目:
http://ac.jobdu.com/problem.php?pid=1163
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stack>
#include <queue>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
using namespace std;
bool prime[10010];//素数
void filter(int t){
int temp;
for(int i=2;i<=10000;i++){
temp=t*i;
if(temp>10000)
break;
prime[temp]=false;
}
}
int main(){
for(int i=2;i<=10000;i++)
prime[i]=true;
int sqr=(int)sqrt(10000)+1;
for(int i=2;i<=sqr;i++){
if(prime[i]==false)
continue;
filter(i);
}
int n;
int flag=0;
while(cin>>n){
flag=0;
for(int i=11;i<n;i+=10){
if(i>=n)
break;
if(prime[i]==true){
if(flag==0)
{
cout<<i;
flag++;
}
else{
cout<<' '<<i;
}
}
}
if(flag==0)
cout<<"-1";
cout<<endl;
}
}
/**************************************************************
Problem: 1163
User: zhouyudut
Language: C++
Result: Accepted
Time:0 ms
Memory:1528 kb
****************************************************************/
1040题目:
http://ac.jobdu.com/problem.php?pid=1040
这题挺有意思的,问第几个素数是?
跑数据得出2~100000,大概有9000多素数,AC程序没敢直接用100000,用的是200000,素数大概有17000多。蛮好玩的。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stack>
#include <queue>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
using namespace std;
bool prime[200010];//素数
int figure[10020];
void filter(int t){
int temp;
for(int i=2;i<=200000;i++){
temp=t*i;
if(temp>200000)
break;
prime[temp]=false;
}
}
int main(){
for(int i=2;i<=200000;i++)
prime[i]=true;
int sqr=(int)sqrt(200000)+1;
int count=0;
for(int i=2;i<=sqr;i++){
if(prime[i]==false)
continue;
// count++;
filter(i);
}
//cout<<"count="<<count<<endl;
for(int i=2;i<=200000;i++)
{
if(count>10000)
break;
if(prime[i]==true){
count++;
figure[count]=i;
}
}
// cout<<"count="<<count<<endl;
int n;
while(cin>>n){
cout<<figure[n]<<endl;
}
}
/**************************************************************
Problem: 1040
User: zhouyudut
Language: C++
Result: Accepted
Time:10 ms
Memory:1752 kb
****************************************************************/
1440题目:
http://ac.jobdu.com/problem.php?pid=1440
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stack>
#include <queue>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0
using namespace std;
bool prime[200010];//素数
int figure[10020];
void filter(int t){
int temp;
for(int i=2;i<=200000;i++){
temp=t*i;
if(temp>200000)
break;
prime[temp]=false;
}
}
int main(){
for(int i=2;i<=200000;i++)
prime[i]=true;
int sqr=(int)sqrt(200000)+1;
int count=0;
for(int i=2;i<=sqr;i++){
if(prime[i]==false)
continue;
// count++;
filter(i);
}
//cout<<"count="<<count<<endl;
for(int i=2;i<=200000;i++)
{
if(count>10000)
break;
if(prime[i]==true){
count++;
figure[count]=i;
}
}
// cout<<"count="<<count<<endl;
int n;
// count=0;
while(cin>>n,n){
count=0;
int sq=n/2;
int temp;
for(int i=1;i<=200000;i++)
{
if(figure[i]>sq)
break;
temp=n-figure[i];
if(prime[temp]==true)
count++;
}
cout<<count<<endl;
}
}
/**************************************************************
Problem: 1440
User: zhouyudut
Language: C++
Result: Accepted
Time:10 ms
Memory:1752 kb
****************************************************************/