试图获取从文件中读取的随机素数之和?
Trying to obtain sum of random prime numbers read from a file?
我正在尝试从文件列表中读取随机数量的数字。从这些数字中,我需要确定数字本身是否是质数,然后我需要将所有质数加在一起以获得它们的总和。
我的这段代码有问题。我有点迷失了如何获取 ARE prime 的值并存储它们,以便我可以将它们加在一起以获得它们的累加和。我认为这部分代码会放在我的 else if
块中,但我不是 100% 确定。有人能给我指出正确的方向 and/or 给我举个例子吗?如果我想求他们的平均值,我可以用类似求和的方法吗?
此外,从我的列表中提取了多个值,所以如果我使用单个变量来表示一个素数,那么每次整个循环迭代时,该变量都会将自身重置为它找到的下一个素数吗?
bool primeCalc()
{
int number;
bool primeValue = true;
int i;
while (inputFile >> number)
{
for (i = 2; i <= number / 2; ++i)
{
if (number % i == 0)
{
primeValue = false;
break;
}
else if (number % i > 0)
{
// some code to store number value for sum;
}
}
}
为什么要储存它们并浪费掉 space?当它们来自流时执行此操作,如下所示:
int sum = 0;
while(inputFile >> number)
{
if(isPrime(number))
sum += (number);
}
其中 isPrime
可以是此原型的函数:bool isPrime(int number);
,其中 returns true
如果 number
是素数,否则为假。
首先,你不必检查到number/2,检查到数字的平方根就足够了。即替换
for (i = 2; i <= number / 2; ++i) {
// stuff
}
与
for (i = 2; i <= sqrt(number); i++) {
// stuff
}
并且您不需要 else 语句。只需在 if 语句中定义一个整数变量来累积素数,例如:
if(primeValue) acc+=number;
for 循环之后是 while 循环。您还需要在 for 循环之前和 while 循环内再次将 primeValue 设置为 true。
如果您想要这些数字的平均值,您可以使用计数器并在累加总和的地方递增它,然后在 while 循环之后,您可以将总和除以计数器。
我正在尝试从文件列表中读取随机数量的数字。从这些数字中,我需要确定数字本身是否是质数,然后我需要将所有质数加在一起以获得它们的总和。
我的这段代码有问题。我有点迷失了如何获取 ARE prime 的值并存储它们,以便我可以将它们加在一起以获得它们的累加和。我认为这部分代码会放在我的 else if
块中,但我不是 100% 确定。有人能给我指出正确的方向 and/or 给我举个例子吗?如果我想求他们的平均值,我可以用类似求和的方法吗?
此外,从我的列表中提取了多个值,所以如果我使用单个变量来表示一个素数,那么每次整个循环迭代时,该变量都会将自身重置为它找到的下一个素数吗?
bool primeCalc()
{
int number;
bool primeValue = true;
int i;
while (inputFile >> number)
{
for (i = 2; i <= number / 2; ++i)
{
if (number % i == 0)
{
primeValue = false;
break;
}
else if (number % i > 0)
{
// some code to store number value for sum;
}
}
}
为什么要储存它们并浪费掉 space?当它们来自流时执行此操作,如下所示:
int sum = 0;
while(inputFile >> number)
{
if(isPrime(number))
sum += (number);
}
其中 isPrime
可以是此原型的函数:bool isPrime(int number);
,其中 returns true
如果 number
是素数,否则为假。
首先,你不必检查到number/2,检查到数字的平方根就足够了。即替换
for (i = 2; i <= number / 2; ++i) {
// stuff
}
与
for (i = 2; i <= sqrt(number); i++) {
// stuff
}
并且您不需要 else 语句。只需在 if 语句中定义一个整数变量来累积素数,例如:
if(primeValue) acc+=number;
for 循环之后是 while 循环。您还需要在 for 循环之前和 while 循环内再次将 primeValue 设置为 true。
如果您想要这些数字的平均值,您可以使用计数器并在累加总和的地方递增它,然后在 while 循环之后,您可以将总和除以计数器。