题目描述
将偶数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;
}
在主函数内部只需要找一半的数字,避免重复
要分享的大概就这些,如果有更好的方法欢迎交流!
如果有帮到你请点个赞吧!也可以关注我,以后会分享更多,谢谢!
(专栏里面还有更多题哦)
585

被折叠的 条评论
为什么被折叠?



