初学c++,不知道为什么会程序崩溃?求救。。。

LR_zouyy 2013-02-02 12:23:34
初学c++,,,输入n,输出n个质数的题,, 不知道为什么会运行时出错。。。


#include <iostream>
using namespace std;

int isPrime2(long num,long array[]){
for ( int i = 0;i < 50;++ i){
if (num % array[i] == 0) return 0;
}
return 1;
}
int isPrime(long num){
for (long i = num / 2;i >= 2; -- i){
if (num % i == 0) return 0;
}
return 1;
}
int main(){
long array[50] = {2,3};
int p = 0;
for (long k = 2;k < 300;++ k){
if (p == 49) break;
if (isPrime(k) == 1){
array[p] = k;
++ p;
}
}
int n,j;
j = 0;
cin >> n;
cout << "2";
for (long i = 3;i <= 999999;++ i){
if (j == n - 1) break;
if (i > array[49]){
if (isPrime2(i,array) == 1){
cout << " " << i;
++ j;
}
}
else {
if (isPrime(i)== 1){
cout << " " << i;
++ j;
}
}

}
}
...全文
295 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
东北熊孩子 2013-02-21
请正确初始化数组的值啊。
  • 打赏
  • 举报
回复
赵4老师 2013-02-21
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
  • 打赏
  • 举报
回复
DyanWang 2013-02-21
引用 1 楼 gpshq 的回复:
C/C++ code?1long array[50] = {2,3}; 数组只有第一个和第二个元素被初始化,未初始化的元素如果为0 C/C++ code?1num % array[i] 肯定是会出错的
++
  • 打赏
  • 举报
回复
wade_2003 2013-02-20

for (long i = 3;i <= 999999;++ i){
         if (j == n - 1) break;
         if (i > array[49]){
            if (isPrime2(i,array) == 1){
                cout << " " << i;
                ++ j;
            }
         }
         else {
              if (isPrime(i)== 1){
                 cout << " " << i;
                 ++ j;
              }
         }
         
     }
个人觉得是你这部分if else匹配出问题,影响了程序
  • 打赏
  • 举报
回复
SoftLy 2013-02-06
楼上正解。。。0除问题。。。。
  • 打赏
  • 举报
回复
氰客 2013-02-02
long array[50] = {2,3};
数组只有第一个和第二个元素被初始化,未初始化的元素如果为0
num % array[i] 
肯定是会出错的
  • 打赏
  • 举报
回复
相关推荐
发帖
新手乐园
加入

3.3w+

社区成员

C/C++ 新手乐园
申请成为版主
帖子事件
创建了帖子
2013-02-02 12:23
社区公告
暂无公告