将字符串转换为所有字符的ASCII值之和并检查素数

时间:2016-10-26 10:12:10

标签: c++

我正在尝试编写一个函数来执行这些操作:

  • 读取文件
  • 对于每一行,添加每个字符的所有ASCII值
  • 检查这些值的总和是否为素数
  • 返回文件中有多少素数

以下是功能:

#include <math.h>
#include <iostream>
#include <fstream>

using namespace std;

bool isPrime(int n) {
    if (n < 2) return false;
    for (int i = 2; i*i <= n; i++)
        if (n % i == 0) return false;
    return true;
}

int checkFile () {
    ifstream napis("data.txt");
    string line;
    int primesCount = 0;

    while (napis.is_open() && getline(napis, line)) {
        int lineLen = line.length();
        int sum = 0;
        for (int i = 0; i < lineLen; i++) {
            sum += (int)line[i];
        }

        if (isPrime(sum)) primesCount++;
    }

    return primesCount;
}

文件中的每一行都是一个只有大写字母的字符串,例如AQUALFJMAGDDSNO

我有一个1000行以上的文件,我知道有122素数,但这个函数返回153

我知道还有很多方法可以解决这个问题,而且我已经在互联网上找到了解决方案,但为什么这个功能不能正常工作?

0 个答案:

没有答案