原题链接:哥德巴赫曾猜测
解题思路:
1.输入一个数num;
2.让num减去从2到num/2的每一个素数;(1不是素数)
3.判断每一个减得的差,差是素数则成立,coun_t++;
判断素数实现(1)
int judge_sushu( int n )
{
int i;
for ( i = 2; i < n; i++ )
if ( n % i == 0 )
break;
if ( i == n )
return(1);
else
return(0);
}改进实现(2)
int judge_sushu( int n ) //只判断2到根号n中,是否有元素是n的因子
{
int i;
float s = sqrt( n );
for ( i = 2; i <= s; i++ )
if ( n % i == 0 )
return(0);
return(1);
}参考代码:
#include <stdio.h>
#include <math.h>
int judge_sushu( int n );
int main()
{
int num, coun_t;
while ( scanf( "%d", &num ) != EOF )
{
coun_t = 0;
for ( int i = 2; i <= num / 2; i++ )
if ( judge_sushu( i ) )
{
if ( judge_sushu( num - i ) )
coun_t++;
}
printf( "%d\n", coun_t );
}
}
/*--------------------------------------------------*/
int judge_sushu( int n )
{
int i;
float s = sqrt( n );
for ( i = 2; i <= s; i++ )
if ( n % i == 0 )
return(0);
return(1);
}别忘点赞哦-.-
0.0分
21 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int main(){ int prime[33000]; int Isprime[33000]; int n,k=0,t=0; scanf("%d",&n); prime[0]=prime[1]=1; for(int i=2;i<n;i++) if(prime[i]==0){ for(int j=2;j*i<n;j++){ prime[i*j]=1; } } for(int i=0;i<n;i++){ if(prime[i]==0){ Isprime[t]=i; t++; } } for(int i=0;i<=t;i++) for(int j=0;j<=t;j++){ if(Isprime[i]+Isprime[j]==n)k++; } if(prime[n/2]==0)printf("%d",k/2+1); else printf("%d",k/2); }