#include<iostream>
#include<iostream>
using namespace std;
int main()
{
int x;
while(cin>>x)
{
for(int e=0;e<=x;e++)
{
if(x%e != 1)
{
cout<<"非質數"<<endl;
}
}
cout<<"質數"<<endl;
}
return 0;
}
}
1.png (83.08 KB, 下載次數: 36)
Brad 發表於 2014-8-26 20:40
我幫你試過了
這種方式會 TLE
e
#include <stdio.h>
int p[7000];
int pn=0;
void init()
{
p[pn++]=2;
p[pn++]=3;
for(int i=5;i<=65536;i+=2)
{
bool tf=true;
for(int j=0;j<pn&&p[j]*p[j]<=i;j++)
{
if(i%p[j]==0)
{
tf=false;
break;
}
}
if(tf)p[pn++]=i;
}
}
int main()
{
init();
int N;
while(~scanf("%d",&N))
{
for(int i=0;i<pn&&p*p<=N;i++)
{
if(N%p==0)
{
printf("非質數\n");
goto end;
}
}
printf("質數\n");
end:;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
bool IsPrime[1000001];
IsPrime[0] = 0;
IsPrime[1] = 0;
for(int m=2;m<1000001;m++)
IsPrime[m] = 1;
for(int m=4;m<1000001;m+=2)
IsPrime[m] = 0;
for(int m=3;m<1000001;m+=2)
{
if(IsPrime[m])
for(int n=m*2;n<1000001;n+=m)
IsPrime[n] = 0;
}
int a,ans;
while(cin>>a)
{
if(IsPrime[a] == 1)
{
cout<<"質數"<<endl;
}
else
{
cout<<"非質數"<<endl;
}
}
return 0;
}
歡迎光臨 竹園論壇 (http://forum.tfcis.org/) | Powered by Discuz! X3.2 |