1

可能重复:
用于检查素数的 C++ 代码不起作用

说明是:素数是只能被 1 和自身整除的数。对于这个作业,你会发现从 1 到 n(其中 n 是用户指定的数字)中的哪些数字是素数。询问用户一个大于 1 的数字 n。使用循环从 2 到 n 迭代变量 i。对于每次迭代,检查从 2 到 i 的所有数字以确定该数字是否为素数。如果是素数,打印出 i 和单词“素数”。

这是我到目前为止所拥有的:

 #include<iostream>
 using namespace std;

 int main()
 {
   int i;
   int n;
   cout << "Enter a number greater than 1" << endl;
   cin >> n;

  bool isPrime=true;
  for(i=0; i<=n; i++)
    {
      if (n%i == 0)
        isPrime=false;
    }
  if(isPrime == true)
  cout << i << " is Prime!" << endl;

  return 0;
  }
4

3 回答 3

3

我不会用工作代码回答一个可疑的家庭作业问题,所以请改用这个伪代码:

main:
    get number from stdin
    loop from 2 to number:
        if number isprime:
            print number " is prime!"
        increment number
    exit

isprime:
    loop from 2 to number - 1:
        if loop counter evenly divides number
            return false
    return true

使用函数来确定数字是否为素数会更好。以这种方式组织你的想法更容易,并且是未来的良好实践,你将解决问题,而组织你的想法将更加困难。

这是一个功能概述。

于 2012-09-12T21:59:48.603 回答
2

您可以为此使用 Sieve 算法。在此处查找算法描述。使用智能解决方案可能会获得额外的荣誉;)

于 2012-09-12T22:59:17.520 回答
0
 bool isPrime(int number){
    bool isPrime = true;
    for(int i = 1; i <= sqrt(number); i++){
        if(number%i == 0)isPrime =  false;
   }
return isPrime;
}
于 2012-09-12T22:49:43.757 回答