0
点赞
收藏
分享

微信扫一扫

PAT 1007 对素数的猜想

小暴龙要抱抱 2022-03-18 阅读 81

#include <stdio.h>
#include <math.h>

int main(void)
{
    int n,i,j,k=0,cot=0,l;
    int flag=1;
    
    scanf("%d",&n);
    int a[n];
    
    for(i=2;i<=n;i++)                           //这题第一次做只拿了18分,错误完全是因为我没有加等于号,i<=n!!!
    {
        l=(int)sqrt(i);
        for(j=2;j<=l;j++)
        {
            if(i%j==0)
            {
                flag=0;
                break;
            }
        }
        if(flag)
        {
            a[k]=i;
            if(k>0)
            {
                if(a[k]-a[k-1]==2)
                {
                    cot++;
                }
            }
            k++;
        }
        else
        {
            flag=1;
        }
    }

    printf("%d\n",cot);
    
    return 0;
}

总结:可以优化的地方,对素数的判断可以优化

for(i=0;i<=n;i++)
{
    for(j=2;j<(int)sqrt(i);j++)
    {
        if(j%i==0)
        {
            break;
        }
    }
    if(j>(int)sqrt(i))
    {
        cot++;      //如果在j的循环中没有使用break,而是j>sqrt(i)才打破的就说明没有符合的数,i是素数 
    }
}

举报

相关推荐

0 条评论