c++ - 简单素数程序....我的代码/脚本有什么问题?

标签 c++ loops for-loop numbers

我想知道我能否在调试或发现我的程序中的错误时获得一些帮助。目的是获取用户输入,然后从输入到零,从最大素数到最小素数显示素数。

问题是输出包括用户输入,它本身可能是也可能不是素数,并且多次重复素数:( 另外,我想知道为什么不包括 2?

我的代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int prime, division, input;
    cout << "Please enter a number you wish to count down prime numbers from." << endl;
    cin >> input;

    for (prime = input ; prime >=2 ; prime-- )
    {
        for (division = 2 ; division < prime ; division++ )
        {
            if (prime % division == 0)
            {
            break;
            }
            else
            {
            cout << prime << " ";
            }
        }
    }
    return 0;
}

我的输出:

请输入您希望从中倒数素数的数字。 15

15 13 13 13 13 13 13 13 13 13 13 13 11 11 11 11 11 11 11 11 11 9 7 7 7 7 7 5 5 5 3

感谢帮助过的人!

最佳答案

这是一个判断输入数字是否为素数的程序。任何数字都可以被一个总是小于它的数字完全整除。 在质数的情况下,它们可以被 1 和它本身整除; 所以我使用了一个计数器变量来计算一个数字被一个或小于它的数字完全整除的次数。 对于质数,计数将始终为 2,对于其他数,计数将大于 2。 计数将是 1 对 1... 于是程序如下....

    #include<iostream.h>
    #include<conio.h>
    class prime
    {
       int a;
       public:
         void check();

    };
       void prime::check()
                         {
                          cout<<"Insert a number";
                          cin>>a;
                          int count=0;
                          for(int i=a;i>=1;i--)
                             {
                                if(a%i==0)
                                      {
                                        count++;
                                       }
                               }
                                 if(count==1)
                                           {
                                cout<<"\nOne is neither prime nor composite";
                                            }
                                  if(count>2)
                                           {
                                cout<<"\nthe number is not prime its composite" ;
                                           }
                                 if(count==2)
                                          {    
                                cout<<"\nthe numner is prime";
                                           }
             }

     void main()
     {
      clrscr();
     prime k;
     k.check();
     getch();
     }

打印所有小于输入给定数的素数;代码如下:

      #include<iostream.h>
      #include<stdio.h>
      #include<conio.h>
        class prime
        {
               int a;
               int i;
        public:
          void display();
        };

          void prime::display()
                   {
                     cout<<"Enter any number to find primes less than it";
                     cin>>a;
                        int count=0;
                     for(int j=a;j>=1;j--)
                      {
                        for(int i=1;i<=j;i++)
                             {
                                if(j%i==0)
                                         {
                                           count++;
                                          }
                               }
                        if(count==2)
                                   {
                                     cout<<"\n"<<j;
                                    }
                         count=0;
                        }
                  }
     void main()
     {
        clrscr();
        prime k;
        k.display();
        getch();
      }

关于c++ - 简单素数程序....我的代码/脚本有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910868/

相关文章:

java - 将许多不同的 Swing 对象添加到面板/框架的有效方法。 ( java )

c++ - 如何将方法声明为 "friend"?

r - 有没有办法简化 R 中利用循环的函数?

c++ - 在 C++ 中向下思考

java - ArrayList 移除一个元素后为什么要左移?

python - 如何根据相同的 ID 比较两个不同数据框中的日期列

javascript - 我疯了还是本地存储......?

python - 使用if语句修改行值

c++ - 为什么当 cplex presolve 开启时 MIP 不可行?

c++ - 特征向量数组的 vector 运算