使用atoi C++

Laz*_*h13 0 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;
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Car*_*rum 7

atoi虽然您没有检查它是否正常工作,但您没有具体问题.

真正的问题是你的程序在循环的第一次迭代中除以零.开始x2:

for (int x = 2; x < maxX; x++)
Run Code Online (Sandbox Code Playgroud)

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

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