C++ C++;如何使用返回布尔值的函数确定素数
我假设制作一个程序,要求用户输入一个介于1和100之间的整数'n',并有一个输入验证循环。然后,程序将计算第一个“n”素数并打印它们。所以我想出了如何计算素数并显示它们,每行10个数字,都在主函数中。我要做的是有一个名为isPrime()的函数,它接受一个整数,如果它是素数则返回true,否则返回false。我不知道该怎么办。这是我为函数main()编写的代码C++ C++;如何使用返回布尔值的函数确定素数,c++,primes,C++,Primes,我假设制作一个程序,要求用户输入一个介于1和100之间的整数'n',并有一个输入验证循环。然后,程序将计算第一个“n”素数并打印它们。所以我想出了如何计算素数并显示它们,每行10个数字,都在主函数中。我要做的是有一个名为isPrime()的函数,它接受一个整数,如果它是素数则返回true,否则返回false。我不知道该怎么办。这是我为函数main()编写的代码 #包括 #包括 使用名称空间std; int main() { 整数; 整数计数=0; 数量; 而(数字100) { cout您似乎在测
#包括
#包括
使用名称空间std;
int main()
{
整数;
整数计数=0;
数量;
而(数字<0 | |数字>100)
{
cout您似乎在测试每一个低于i的j的i%j。但是如果您测试j=3,那么您可以排除所有3的倍数。当一个数字不能被3除时,它不能被6除。这将提高性能
您还可以实施AKS原始测试
这可能需要更多的工作。我不知道这个测试的细节,但它是确定的,适用于所有数字
如果您想要一个函数bool isPrime(int number),您可以从主方法中提取此代码,它看起来像这样:
bool isPrime(int number){
for (int j = 2; j < number/2; ++j)
{
if (number % j == 0)
{
return false;
}
}
return true;
}
bool isPrime(整数){
对于(int j=2;j
主函数中的for循环类似于:
for (int i = 2; number > 0; ++i)
{
if (isPrime(i))
{
count++;
--number;
cout << setw(5) << i;
if (count % 10 == 0)
cout << endl;
}
}
for(int i=2;number>0;++i)
{
如果(i)
{
计数++;
--数量;
好吧,我会记住这一点,但是这段代码让我得到了想要的结果。我正在研究如何更改我必须包含的bool isPrime(int number)来计算一个数字是否为素数,然后将其合并到函数main()中.我对编程相当陌生,所以我真的不想让事情变得比我能接受的更复杂。我修改了我的anwser。这就是你想要的吗?使用sqrt(number)
而不是number/2
Irleon可能更快,我之前试过,但它给了我一些不是素数的数字
for (int i = 2; number > 0; ++i)
{
if (isPrime(i))
{
count++;
--number;
cout << setw(5) << i;
if (count % 10 == 0)
cout << endl;
}
}