SZU实验九数组3函数1【id:478】【20分】E. 哥德巴赫猜想(函数)

题目描述

将偶数x分解为两个素数的和,输出这种分解有多少种可能的方案数,其中需要判断一个数是否为素数,判断素数的功能要求自己写函数实现(否则不给分)

输入

输入一个整数x,x>2

输出

输出方案数

IO模式

本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。

代码如下:

#include <stdio.h>
#include <math.h>
int isprime(int num);//函数声明
int main()
{
	int x,sum,right,left;
	scanf("%d",&x);
	sum=0;
	right=x/2+1;//只需要找一半,这是最右端(不包含)
	left=2;//1和0不是素数也不是合数
	while(left<right)
	{
		if(isprime(left)&&isprime(x-left))//可以是两个素数的和
			sum++;//总数+1
		left++;//向右挪一位
	}
	printf("%d",sum);
	
}
int isprime(int num)
{
    if (num <= 1) return 0; 
    if (num <= 3) return 1; 
    if (num%2==0||num%3==0) return 0; 
	int sqrtnum=sqrt(num); 
    for (int i=5;i<= sqrtnum;i+=2) 
		if (num%i==0) 
			return 0;
    return 1;
}

在主函数内部只需要找一半的数字,避免重复

要分享的大概就这些,如果有更好的方法欢迎交流!

如果有帮到你请点个赞吧!也可以关注我,以后会分享更多,谢谢!

(专栏里面还有更多题哦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值