#9686: 會發生 記憶體區段錯誤! Dev-C++就可執行 問題出在哪


s56565566123 (akali)

學校 : 國立虎尾科技大學
編號 : 47695
來源 : [61.70.196.187]
最後登入時間 :
2023-09-06 01:01:55
a007. 判斷質數 | From: [218.173.100.52] | 發表日期 : 2015-03-02 22:20

#include <iostream>
#include <cstdlib>
#include <cstring> 

using namespace std;
int main(void){
int num;
bool A[50000];
int B[5000]; 
for(int i=0;i<50000;i++){
A[i]=false; 
B[1]=2;
B[2]=3;
B[3]=5;
int a=6;
bool ok=true;
int i=3;
while(i<5000){
ok=true;
for(int j=1;j<=i;j++){
if(a % B[j]==0){
ok=false;
break;
}
}
if(ok==true){
B[i+1]=a;
i++;
}
a++;
}
for(int j=1;j<5000;j++){
A[B[j]]=true;
}

while(scanf("%d",&num)!=EOF){
if(A[num]==true){
printf("質數\n"); 
}else{
printf("非質數\n"); 
}

return 0;

}
 
#9690: Re:會發生 記憶體區段錯誤! Dev-C++就可執行 問題出在哪


m80126colin (許胖)

學校 : 新北市立板橋高級中學
編號 : 2331
來源 : [114.24.77.220]
最後登入時間 :
2024-11-06 23:38:10
a007. 判斷質數 | From: [58.115.94.7] | 發表日期 : 2015-03-04 21:48

#include
#include
#include  

using namespace std;
int main(void){
int num;
bool A[50000];
int B[5000]; 
for(int i=0;i<50000;i++){
A[i]=false; 
B[1]=2;
B[2]=3;
B[3]=5;
int a=6;
bool ok=true;
int i=3;
while(i<5000){
ok=true;
for(int j=1;j<=i;j++){
if(a % B[j]==0){
ok=false;
break;
}
}
if(ok==true){
B[i+1]=a;
i++;
}
a++;
}
for(int j=1;j<5000;j++){
A[B[j]]=true;
}

while(scanf("%d",&num)!=EOF){
if(A[num]==true){
printf("質數\n"); 
}else{
printf("非質數\n"); 
}

return 0;

}

 


為何是 5000 和 50000?

 

 

試試看 2100000000 

 
#9695: Re:會發生 記憶體區段錯誤! Dev-C++就可執行 問題出在哪


a12345678665 (marktohark)

學校 : 國立虎尾科技大學
編號 : 48059
來源 : [49.213.194.197]
最後登入時間 :
2019-07-11 10:50:36
a007. 判斷質數 | From: [123.110.148.74] | 發表日期 : 2015-03-05 23:48

#include
#include
#include  

using namespace std;
int main(void){
int num;
bool A[50000];
int B[5000]; 
for(int i=0;i<50000;i++){
A[i]=false; 
B[1]=2;
B[2]=3;
B[3]=5;
int a=6;
bool ok=true;
int i=3;
while(i<5000){
ok=true;
for(int j=1;j<=i;j++){
if(a % B[j]==0){
ok=false;
break;
}
}
if(ok==true){
B[i+1]=a;
i++;
}
a++;
}
for(int j=1;j<5000;j++){
A[B[j]]=true;
}

while(scanf("%d",&num)!=EOF){
if(A[num]==true){
printf("質數\n"); 
}else{
printf("非質數\n"); 
}

return 0;

}

 


我測試過了

 

在這網站上的for(int i=0 ;i<??;i++)

在這網站上是會錯誤的

請改成

int i;

for(i=0;i<??;i++) 

 
ZeroJudge Forum