PAT 乙级 1007 素数对猜想

在这里插入图片描述

解题思路:其实这道题的本质还是让你写素数,我们循环N,如果i和i+2都是素数就count++,之后从新素数在开始判断

c语言版

#include<stdio.h>
int prime(int n)	
 {
 	int i,flag=1;
 	for(i=2;i*i<=n;i++)    //很多人愿意用sqrt函数去写这个,我个人不建议,因为sqrt是一个double值在内存当中的存储类似科学计数法,不可能完美的保存浮点数,只是相近值,如果例子某些卡的很严格,很难找出来这样的错误,一般尽量不用double值比较
 	{
 		if(n%i==0)
 		{
 			flag=0;
 			break;
		 }
	 }
 	return flag;
 	
 }
int main()
{
	int n;
	scanf("%d",&n);
	int i,count=0;
	for(i=2;i<=n-2;i++)
	{
		if(prime(i)&&prime(i+2))
		{
			count++;
			i++;
		}
	}
	printf("%d\n",count);
	return 0;
}

python版本: 算法基本一样但是最后一个数据过不去,总是超时,无奈

def  prime(n):
    flag=True
    i=2
    while(i*i<=n):
        if(n%i==0):
            flag=False
            break;
        i=i+1
    return flag

n=int(input())
count=0
for i in range(2,n-1):
    if(prime(i) and prime(i+2)):
        count=count+1
        i=i+1
print(count)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值