a007.
判斷質數
| From: [112.104.100.101] |
發表日期
:
2014-05-04 00:32
你好 我用c++ 常得到如下錯誤訊息:
================= RE (SIGSEGV) 執行時期錯誤 記憶體區段錯誤! Segmentation fault ================= 上網查可能原因為: ================= * 通常為使用超過陣列範圍 * 指標指向不正確位址! * 陣列初始化不正確! * 嘗試在執行時期定義陣列長度! ================= 但我使用家裡的編譯器測試是ok的!? 我把程式貼在下方:
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
int main()
{
int iary[20] ;
string sary[20];
int counter = 0;
for(int i=0;i<20;++i){
iary[i]=0;
sary[i]="質數";
}
while(cin>>iary[counter]){
if(iary[counter]<=2147483647){
if(iary[counter]==1||(iary[counter]>2)&(iary[counter]%2==0)){
sary[counter]="非質數";
}
}else{
for(int i=3;i<=sqrt(iary[counter]);i+=2){
if( iary[counter]==3){
sary[counter]="質數";
break;
}
if(iary[counter]%i==0){
sary[counter]="非質數";
//
break;
}
}
//
// //測試代碼
// if(counter>=2){
// break;
// }
}
++counter;
}
for(int i=0;i<counter;++i){
cout<<sary[i]<<'\n';
}
return 0;
}
想請高手看看 不知哪裡有錯 thanks'