首页 > 解决方案 > 我怎样才能找到质数?

问题描述

如何以简单的方式在 C++ 中的一维数组中找到素数?

{
         int list[5];
         int i,sum = 0;

           for (i = 0; i < 5; i++)
           {
            cout << "Enter The List [" << i << "]: "; cin >> list[i];
            sum = sum + list[i];
           }
                cout << endl;
                cout << "The Sum Is:" << sum << endl;

}

标签: c++arraysvisual-c++primes

解决方案


强调@john 的评论:

创建一个函数(比如bool is_prime(int n))。现在检查数字 n 是否为素数。

n因此,您需要检查每个正整数在除法之前是否大于 1,n而不会留下任何余数。有一个更短的解决方法,这将大大降低计算成本。只需检查直到数字的平方根n就可以了。因此sqrt()使用该功能。所以现在,我们的is_prime()函数很容易构建,如您所见:

bool is_prime(int n)
{
    int i,p=0;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            p=1;
            break;    //even if one integer divides the number, then it is composite.
        }
    }
    if(p==1)
    return false;   //The number is a composite.
    else
    return true;    //The number is a prime.
}

现在,您只需将数组的每个值都传递给此函数,您的工作就完成了。

此外,如果您检查1的特殊情况,它既不是合数也不是素数,这个程序可以做得更好。一个建议是,检查您的数组元素是否为1。如果不是,则在函数中传递值,否则只打印它是1

注意:sqrt()函数在 C++ 库中可用,cmath因此您也需要将其包含在程序中。


推荐阅读