我正在尝试编写一个函数来执行这些操作:
以下是功能:
#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
。
我知道还有很多方法可以解决这个问题,而且我已经在互联网上找到了解决方案,但为什么这个功能不能正常工作?