首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的素数程序...我的代码/脚本出了什么问题?

简单的素数程序...我的代码/脚本出了什么问题?
EN

Stack Overflow用户
提问于 2011-10-27 09:43:40
回答 5查看 8.3K关注 0票数 0

我想知道我可以在调试或发现程序中的错误方面获得一些帮助。目标是获得用户输入,然后显示素数,从输入到零,从最大素数到最低素数。

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

我的代码:

代码语言:javascript
复制
#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 11 11 11 9 7 7 7 5 5 5 3

感谢那些帮助我们的人!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-27 09:58:58

试试这段代码

代码语言:javascript
复制
#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--)
    {
        boolean isDivisible = false;
        for (division = 2 ; division < prime ; division ++)
        {
            if (prime % division == 0)
            {
                isDivisible = true;
            }
        }
        if (isDivisible == false)
        {
            cout << prime << " ";
        }
    }
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2012-10-28 19:17:30

这是一个程序,它告诉我们输入的数是质数,还是not.Any数完全可以被一个总是小于它的数整除。对于质数,它们完全可以被1及其本身整除;所以我使用了一个计数器变量,它计算一个数字被一个或更小的一个数字完全整除的次数。素数的计数将始终为2,其他数的计数将大于2。计数将是1比1...因此,程序如下……

代码语言:javascript
复制
    #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();
     }

要打印小于作为输入的数字的所有质数,代码如下:

代码语言:javascript
复制
      #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();
      }
票数 1
EN

Stack Overflow用户

发布于 2011-10-27 09:48:38

对于第一个问题:

对于9,当division == 29 % 2 ==1,所以9是素数时,你应该有一个标志值来表示一个数字是否是质数,并在确定它是质数后打印这个数字。

对于2,编辑:当为prime == 2时,因为division < prime是执行内部循环的条件,所以内部循环退出而不运行。所有的功劳都归马龙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7910868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档