Use of atoi C++

Use of atoi C++

本文关键字:C++ atoi of Use      更新时间:2023-10-16

我在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吗?我用错了吗?或者这是一个完全不同的问题?

谢谢

你没有atoi的问题,虽然你没有检查,看看它是否正常工作。

真正的问题是程序在循环的第一次迭代时除以0。在2:

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

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

编者按:如果对你有用的话,有很多更快的方法来检查一个数字是否是素数。

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

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