找出100-300之间的所有强素数

8、找出100-300之间的所有强素数 强素数:如果一个素数大于其相邻两个素数的均值,则该项素数是强素数。

我是用这个方法求素数的

怎么对素数进行比较?

#include<stdio.h>
#include<math.h>
void main()
{
int x,i,k=0;
bool t;
for(x=101;x<300;x+=2)
{
t=true;
for(i=2;i<=sqrt((float)x);i++)
{
if(x%i==0)
{
t=false;
break;
}
}
if(t)
{
printf("%5d",x);
k++;
if(k%10==0)
printf("\n");
}
}
}

先用一个数组把100-300之间的素数存储下来,然后遍历这个数组,将数组当前位置和前一个位置和后一个位置值的均值比较,如果大于0就打印,代码修改如下:


#include<stdio.h>
#include<math.h>
int  main()
{
    int x,i,k=0;
    bool t;

    int prime[201];
    printf("100-300之间所有的素数为:\n");
    for(x=101;x<300;x+=2)
    {
        t=true;
        for(i=2;i<=sqrt((float)x);i++)
        {
        if(x%i==0)
        {
            t=false;
            break;
        }
        }
        if(t)
        {
            prime[k]=x;
            printf("%5d",x);
            k++;
        if(k%10==0)
            printf("\n");
        }
    }
    
    //寻找100-300之间的强素数 
    int j,p=0;
    int prePrime =prime[0],nextPrime=prime[2];
    printf("\n100-300之间所有的强素数为:\n"); 
    for(j=0;j<k-1;j++){
        
        double strongPrimeResult = (double)(prime[j]-(prePrime+nextPrime)/2);
        if(strongPrimeResult>0){
        //    printf("prime[%d]=%d,prePrime=%d,nextPrime=%d,强素数=%d\n",j,prime[j],prePrime,nextPrime,prime[j]);
            printf("%5d",prime[j]);
            p++;
            if(p%10==0)
                printf("\n");
                
            
            prePrime=prime[j];
            nextPrime=prime[j+2];
        }
        
        
    }
    
    return 0;
}

你可以把所有100~300的素数存在一个集合里面啊,然后就循环比较一下,左边+右边 除以2 跟中间的比一下。