下面是素数的计算。我试图解构它以更好地理解循环。另外,我想通过将数字与其平方根进行比较来调整此函数以找到素数,而不是这样:
(假设在 int main 之前进行了适当的声明)
//判断数字是否为素数
bool isPrime (long n)
{
int a;
if (n == 1)
{
return false;
}
for (a = 2; a <= (n / 2); a++)
{
if ((n % a) == 0)
{
return false;
}
}
return true;
}
然而,观察这个循环,我有一个问题,看看我是否正确地观察了这个函数。从我所见,它看起来像是int a;
计数器,它从 2 开始,因为 0 和 1 不是素数。n 应该是形式变量。它指出,对于每个除以 2 时小于或等于自身的数字,如果余数大于零,则为 bool 返回 true。同时,如果一个数被 2 整除(所以没有余数),则它不被视为素数(布尔返回 false)。那个听起来是对的吗?如果没有,请让我知道我在哪里拐错了。如果我做对了,就进入程序的后半部分。
现在在这里,主要primeCount;
是有限的primeCount (2, 50000);
,但第一个函数在这里输入:
// 使用 isPrime 函数计算和组织素数
long primeCount (long x, long y)
{
bool prime;
int b;
int c = 1000;
int counter = 0;
int totalSum = 0;
for (b = 1; b <= y; b++)
{
prime = isPrime (b);
if (prime == true)
{
counter++;
}
if (b == c)
{
cout << setw(10) << left << (b - 999) << setw(10) << left << b << setw(12) << counter << endl;
cout << fixed << showpoint << setprecision(2) << endl;
totalSum = totalSum + counter;
counter = 0;
c = c + 1000;
}
}
现在,我认为 x 和 y 是形式变量,但我不知道 x 应该代表什么。它代表int c;
吗?该函数中的 for 循环完全让我感到困惑。我不明白。任何可以阐明的光都将不胜感激。
至于平方根查询,我是否需要使用 3 个嵌套的 for 循环才能获得素数?像这样:
for (a > m => b)
for (a==m => b==m)
for (a < m => b>m)
以这种方式定位素数会比这里说明的方式复杂吗?我知道这需要解决很多问题。如果你们建议我把它分成单独的帖子,我会编辑这个并将后半部分发布在另一个帖子中。感谢您的协助!只是一个试图从这些东西中脱颖而出的大一 C++ 程序员 :)