zoukankan      html  css  js  c++  java
  • 寻找素数对

    #include<stdio.h>
    #include<math.h>
    #define max 10001      //素数表范围
    int flag[max+1];        //标志一个数是否为素数
    int prime[max+1];       //素数表,下标从0开始
    int size;              //素数个数
    void main()
    {
     int i,j,size=0,M,sum,min,a[2],s;
        for(i=2;i<=max;i++)          //将偶数标志为0,奇数标志为1
     {
      if(i%2==0)
       flag[i]=0;
      else
       flag[i]=1;
        }
        for(i = 2; i <= max / 2; i++)  
        {
            if(flag[i]==1)
            {
                for( j = 2*i ; j <= max; j += i) //将已知的素数的倍数标志为0
                {
                    flag[j] = 0;
                }
            }
        }
        for( i = 2 ; i <= max; i++)
        {
            if(flag[i]==1)
            {
                prime[size++] = i; //搜索标志为1 的数就是素数,将素数存入prime数组中间
            }
        }

    /* for(i=0;i<size;i++)
       printf("%d ",prime[i]);*/
     while(scanf("%d",&M)!=EOF)
     {
      sum=0;
      min=M;   //将最小值赋值为M
      for(i=0;i<size;i++)
      {
       for(j=0;j<size;j++)
       {
        sum=prime[i]+prime[j];    //搜索和为M的两个素数
        if(sum==M)
        {
         s=abs(prime[i]-prime[j]); //找出数之差最小的两个素数
         if(s<min)
         {
          min=s;
          if(prime[i]>prime[j])    //按从小到大输出
          {
           a[0]=prime[j];
           a[1]=prime[i];
          }
          else
          {
           a[0]=prime[i];
           a[1]=prime[j];
          }
         }
        }
        if(sum>M) break;    //两数之和大于M则跳出循环
       }
      }
      printf("%d %d\n",a[0],a[1]);    //用数组a存储两个素数的值
     }
    }

  • 相关阅读:
    利用qt打开一张图片并转成灰度矩阵
    适配手机端浏览器
    ps常用快捷键(供自己学习查看)
    用选框工具画圆角矩形
    ps制作有背景图片的字体
    所有iOS 设备的屏幕尺寸
    九宫格有规律高亮滚动效果
    移动端点击事件全攻略
    移动端ios升级到11及以上时,手机弹框输入光标出现错位问题
    linux下截取整个网页
  • 原文地址:https://www.cnblogs.com/xuwanghu/p/2996355.html
Copyright © 2011-2022 走看看