注册 登录
编程论坛 VC++/MFC

急,请高手帮忙看看错在哪里?

lzb6689 发布于 2013-11-21 22:37, 369 次点击
急,请高手帮忙看看错在哪里?运行时输入大于15的数总是报错。
以下是代码:
// 素数和.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
        int i,j,k,l,n,m;
    int w,z,x,d;
    int *a;
    cout<<"n=";
    cin>>n;
    cout<<endl;
    a=new int(n+1);
    m=0;
    if(n==2){
        m=1;a[m]=2;
    }
    else
    {m=1;a[m]=2;
    for(i=3;i<=n;i++)
    {
        k=i;d=0;w=1;
        for(j=1;j<=m;j++)
        {
            l=0;
            while((l==0)&&(k>0))
            {
                if(k%a[j]==0)
                {
                   d++;   
                   k=k/a[j];
                   w=w+a[j];
                }
                else
                {
                    l++;
                }
            }
        }
        if(k>1)w=w+k;
        if(d==0)
        {
            m++;a[m]=i;
        }
        else
        {
            if(w==i)cout<<i<<endl;
        }
    }
    }
    delete[] a;
    system("pause");
    return 0;
   
}

3 回复
#2
yuccn2013-11-22 08:06
a=new int(n+1); 改成     a=new int[n+1];

  a=new int(n+1); 等价 a = new int;a=n+1;
#3
lzb66892013-11-22 10:34
谢谢yuccn版主,改后问题得以解决,看来是我糊涂了,居然把 a=new int[n+1]搞成a=new int(n+1),编译器也不报错。
#4
yuccn2013-11-22 11:03
回复 3楼 lzb6689
编译器当然不报啦,语法上完全正确
1