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

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

时间2025-06-19 12:43:30分类IT科技浏览4553
导读:题目:质数之和...

题目:质数之和

已知             ,第一个质数是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
基于场景的人工智能技术综合应用(人工智能大模型多场景应用原理解析)