#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define maxn 46340
using namespace std;
bool c[maxn+10];
vector <int>p;
void sieve()
{
int i,j;
memset(c,0,sizeof(c));
c[0]=c[1]=1;
for(i=2;i<=maxn;i++)
{
if(c[i]==1) continue;
p.push_back(i);
for(j=i+i;j<=maxn;j+=i)
{
c[j]=1;
}
}
return;
}
bool isp(int n)
{
if(n<=maxn) return(!c[n]);
else
{
int q=(int)sqrt(n);
int k;
for(k=0;k<=p.size()&&p[k]<=q;k++)
{
cout <<n%p[k]<<endl;
if(n%p[k]==0) return false;
else continue;
return true;
}
}
}
int main()
{
sieve();
int n;
while(cin >> n)
{
if(isp(n)) cout <<"質數"<<endl;
else cout <<"非質數"<<endl;
}
return 0;
}
#include
#include
#include
#include
#define maxn 46340
using namespace std;
bool c[maxn+10];
vector p;
void sieve()
{
int i,j;
memset(c,0,sizeof(c));
c[0]=c[1]=1;
for(i=2;i<=maxn;i++)
{
if(c[i]==1) continue;
p.push_back(i);
for(j=i+i;j<=maxn;j+=i)
{
c[j]=1;
}
}
return;
}
bool isp(int n)
{
if(n<=maxn) return(!c[n]);
else
{
int q=(int)sqrt(n);
int k;
for(k=0;k<=p.size()&&p[k]<=q;k++)
{
cout <<n%p[k]<<endl;
if(n%p[k]==0) return false;
else continue;
return true;
}
}
}
int main()
{
sieve();
int n;
while(cin >> n)
{
if(isp(n)) cout <<"質數"<<endl;
else cout <<"非質數"<<endl;
}
return 0;
}
改成這樣變RE
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define maxn 46340
using namespace std;
bool c[maxn+10];
vector <int>p;
void sieve()
{
int i,j;
memset(c,0,sizeof(c));
c[0]=c[1]=1;
for(i=2;i<=maxn;i++)
{
if(c[i]==1) continue;
p.push_back(i);
for(j=i+i;j<=maxn;j+=i)
{
c[j]=1;
}
}
return;
}
bool isp(int n)
{
if(n<=maxn) return(!c[n]);
else
{
int q=(int)sqrt(n);
int k;
for(k=0;k<=p.size()&&p[k]<=q;k++)
{
if(n%p[k]==0) return false;
else continue;
}
return true;
}
}
int main()
{
sieve();
int n;
while(cin >> n)
{
if(isp(n)) cout <<"質數"<<endl;
else cout <<"非質數"<<endl;
}
return 0;
}
第 1 測資點(100%): RE (SIGFPE)
執行時期錯誤
溢位或者除以0的錯誤!! Floating point exception
請問是為何?
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define maxn 46340
using namespace std;
bool c[maxn+10];
vector <int>p;
void sieve()
{
int i,j;
memset(c,0,sizeof(c));
c[0]=c[1]=1;
for(i=2;i<=maxn;i++)
{
if(c[i]==1) continue;
p.push_back(i);
for(j=i+i;j<=maxn;j+=i)
{
c[j]=1;
}
}
return;
}
bool isp(int n)
{
if(n<=maxn) return(!c[n]);
else
{
int q=(int)sqrt(n);
int k;
for(k=0;k<p.size()&&p[k]<=q;k++)
{
cout <<n%p[k]<<endl;
if(n%p[k]==0) return false;
else continue;
return true;
}
}
}
int main()
{
sieve();
int n;
while(cin >> n)
{
if(isp(n)) cout <<"質數"<<endl;
else cout <<"非質數"<<endl;
}
return 0;
}
貼錯了@@
應該是這個
注意vector的index是0~size()-1
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define maxn 46340
using namespace std;
bool c[maxn+10];
vector <int>p;
void sieve()
{
int i,j;
memset(c,0,sizeof(c));
c[0]=c[1]=1;
for(i=2;i<=maxn;i++)
{
if(c[i]==1) continue;
p.push_back(i);
for(j=i+i;j<=maxn;j+=i)
{
c[j]=1;
}
}
return;
}
bool isp(int n)
{
if(n<=maxn) return(!c[n]);
else
{
int q=(int)sqrt(n);
int k;
for(k=0;k<p.size()&&p[k]<=q;k++)
{
if(n%p[k]==0) return false;
else continue;
}
return true;
}
}
int main()
{
sieve();
int n;
while(cin >> n)
{
if(isp(n)) cout <<"質數"<<endl;
else cout <<"非質數"<<endl;
}
return 0;
}
貼錯了@@
應該是這個
注意vector的index是0~size()-1
#include
#include
#include
#include
#define maxn 46340
using namespace std;
bool c[maxn+10];
vector p;
void sieve()
{
int i,j;
memset(c,0,sizeof(c));
c[0]=c[1]=1;
for(i=2;i<=maxn;i++)
{
if(c[i]==1) continue;
p.push_back(i);
for(j=i+i;j<=maxn;j+=i)
{
c[j]=1;
}
}
return;
}
bool isp(int n)
{
if(n<=maxn) return(!c[n]);
else
{
int q=(int)sqrt(n);
int k;
for(k=0;k<p.size()&&p[k]<=q;k++)
{
if(n%p[k]==0) return false;
else continue;
}
return true;
}
}
int main()
{
sieve();
int n;
while(cin >> n)
{
if(isp(n)) cout <<"質數"<<endl;
else cout <<"非質數"<<endl;
}
return 0;
}
謝謝你的幫忙~