使用atoi C ++

时间:2013-04-16 15:30:42

标签: c++ atoi

我在C ++中有以下功能:

#include <iostream>
#include <cmath>
#include <stdlib.h>    
bool isPrime(char myArr[])
{
    int myInt=atoi(myArr);
    int maxX=sqrt(myInt)+1;
    for(int x=0; x<maxX; x++)
    {
        if(!myInt%x)
            return false;
    }
    return true;
}

但是当我运行它时,Windows返回一个消息框,说“Prime.c已经停止工作”我觉得它与使用atoi有关,虽然我不确定。应该使用atoi吗?我用错了吗?或者这是一个完全不同的问题?

由于

2 个答案:

答案 0 :(得分:7)

您没有专门针对atoi的问题,但是您没有检查它是否正常工作。

真正的问题是你的程序在循环的第一次迭代中除以零。从x开始2

for (int x = 2; x < maxX; x++)

你也必须从2开始。从1开始会告诉你所有的数字都是素数,这不是真的,可能不是你想要的。您可能需要一个特殊情况来处理01输入 - 它们不是素数,但会超出您当前的算法。

编辑抛开:有很多更快的方法可以检查一个数字是否为素数,如果这对您有用。

答案 1 :(得分:0)

你不想除以0,从2开始:

for (int x = 2; x < maxX; x++)