任何人都可以帮我写这个简单的素数程序,我不能正确

时间:2012-09-12 21:53:25

标签: c++

  

可能重复:
  C++ code for checking for prime numbers not working

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

这是我到目前为止所做的:

 #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;
  }

3 个答案:

答案 0 :(得分: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

使用函数判断一个数字是否为素数,你会有更好的运气。以这种方式组织你的想法更容易,对未来的良好实践更容易,在那里你将解决组织你的想法将会更加困难的问题。

Here's a function overview.

答案 1 :(得分:2)

您可以使用Sieve算法。查看here以获取算法描述。使用智能解决方案可能会获得额外的功劳;)

答案 2 :(得分:0)

 bool isPrime(int number){
    bool isPrime = true;
    for(int i = 1; i <= sqrt(number); i++){
        if(number%i == 0)isPrime =  false;
   }
return isPrime;
}