首页IT科技第2021个质数是什么(质数之和【计算第x个到第y个质数之和】)

第2021个质数是什么(质数之和【计算第x个到第y个质数之和】)

时间2025-09-13 16:45:21分类IT科技浏览5802
导读:题目:质数之和...

题目:质数之和

已知                ,第一个质数是2                         ,第二个质数是3        ,第三个质数是5                ,第四个质数是7                         ,第五个质数是11        ,第六个质数是13        ,第七个质数是17                         ,输入两个不相等的正整数a和b                 ,求出第a个质数到第b个质数当中所有质数和                 。a和b之间以空格间隔        ,其中a和b都小于200                        。

输入1:1 4  输出1:17

输入2:7 2  输出2:56

第一步:我们来分析题目

需要注意的要点有:

  1.输入的a和b是“第几个质数                ”                        ,这启发我们需要使用数组;

  2.求质数和                 ,或许需要循环相加;

  3.观察输入输出2可以发现,a                 、b大小是不确定的!这就需要我们进行if判断两者之间的大小了        。

第二步:梳理题目块

经过分析                        ,我们的c语言程序需要这几个部分:

  1.判断一个数字是否为质数

    为了方便和直观起见                         ,我另定义了一个函数isPrime来判断质数,方法是:对所有从2开始到这个数字之间的                        、能够被这个数字整除的数用count计数         。当count==0时                ,说明这个数除了1和它本身外没有其他因数了                         ,即质数        ,return它自己;若count!=0,说明它不是质数                ,return 0                        。

      int isPrime(int x)

      {

        int i,count=0;

        for(i=2 ; i

        {

          if(x%i==0)

          {

            count++;

          }

        }

        if(count==0)

        {

          return x;

        }

        else

        {

          return 0;

        }

      }

  2.如果是质数                         ,将这个质数的值赋给数组中的一个变量;如果不是        ,将这个数字加一以后再循环(发现这里是第一个循环)

  int main()

  {

    int a[1000]={0},j,m;

    int origin=2;

    for(j=0 ; j<=1000 ; j++)

    {

      for(m=0 ; a[j]==0 ; m++)

      {

        if(isPrime(origin)==0)

        {

          origin++;

        }

        else

        {

          a[j] = origin;

          origin++;

        }

      }

    }

  3.输入x,y        ,判断x,y大小之后分别赋给大数max和小数min                         ,利用循环和数组进行求和

    int x,y;

    scanf

("%d %d",&x,&y);

    int sum=0;

    int max,min;

    if(x>y)

    {

      max = x;

      min = y;

     }

    else

    {

      max = y;

      min = x;

    }

    for(j=min-1 ; j

    {

      sum += a[j];

    }

    printf("%d",sum);

    return 0;

  }

第三步:整合代码

#include

int isPrime(int x)

{

  int i,count=0;

  for(i=2 ; i

  {

  if(x%i==0)

  {

    count++;

  }

  if(count==0)

  {

    return x;

  }

  else

  {

    return 0;

  }

}

int main()

{

  int a[1000]={0},j,m;

  int origin=2;

  for(j=0 ; j<=1000 ; j++)

  {

    for(m=0 ; a[j]==0 ; m++)

    {

      if(isPrime(origin)==0)

      {

        origin++;

      }

      else

      {

        a[j] = origin;

        origin++;

      }

    }

  }

  int x,y;

  scanf("%d %d",&x,&y);

  int sum=0;

  int max,min;

  if(x>y)

  {

    max = x;

    min = y;

  }

  else

  {

    max = y;

    min = x;

  }

  for(j=min-1 ; j

  {

    sum += a[j];

  }

  printf("%d",sum);

  return 0;

}

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
java里的final关键字(Java关键词final解读) vue开发自己的组件库(从0搭建Vue3组件库(五): 如何使用Vite打包组件库)