我想找到素数列表,我尝试了此代码,但没有显示任何内容:
#include <iostream>
using namespace std;
int main()
{
int n, i;
std::cout << "Liste des nombres premiers : " << std::endl;
for (n = 1; n < 100; n++) {
for (i = 2; i < n; i++) {
if (n % i == 0)
std::cout << n << " ";
}
}
return 0;
}
答案 0 :(得分:2)
我根本不喜欢您的代码。尝试执行以下操作:创建一个告诉您数字是否为质数的函数,然后使用for循环遍历从1到100的所有数字,并检查该函数是否为质数。 这是一个易于记忆的功能(用于自然数):
> | locations |
> | :----------------------------------------------------- |
> | Location A,Location B,Location C,Location A,Location B |
如果数字为素数,则此函数返回1,否则为0。 这个想法是这样的:
如果n为0或1,则不是素数。
如果n为2,则为质数。
如果n是2的倍数,但不是2,则不是素数。
然后,您必须检查n是否有除数,直到获得n的平方根(i * i <= n)
答案 1 :(得分:0)
更正程序错误:
n
的值初始化为2
。i
等于n
时打印,而不在n % i
为0
时打印。应该是n % i == 0
然后中断。i < n
更改为i <= n
。 尝试第一种方法(使用sqrt()
):
#include <iostream>
#include <cmath>
int main(void)
{
for (int i = 2; i < 100; i++) {
if (i == 2 || i == 3) { // if number is 2 or 3, then prints it
std::cout << i << ' ';
}
for (int j = 2; j * j <= i; j++)
{
if (i % j == 0) break;
else if (j + 1 > sqrt(i)) std::cout << i << ' ';
}
}
return 0;
}
替代方法:
#include <iostream>
int main(void)
{
for (int n = 2; n < 100; n++)
for (int i = 2; i <= n; i++)
if (i == n) std::cout << i << ' ';
else if (n % i == 0) break;
return 0;
}