尝试用C语言验证哥德巴赫猜想C语言趣味课堂练习
2021-06-07杨英翔
摘要:作者多年从事计算机应用技术研究和教学,在C语言程序设计的教学过程中,作者一直在探索激发学生学习兴趣、降低课程难度、提高学习成绩的有效途径,并提出自己的一些做法供同行们参考。
关键词:C语言;教法;计算机
正文:
歌德巴赫猜想:任意一个不小于6的偶数都可以表示成两个素数的和。
本题的目的:在键盘上任意给一个符合条件的数,输出相应的两个素数。
素数:指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
源程序:
#include<stdio.h>
int cc(int x) // 自定义函数
{int i;
for(i=2;i<=x;i++)
{if((x%i==0)&&(i<x))
return 0;
else if((x%i==0)&&(x==i))
return 1;}}
void main( )
{ printf("\n\n 哥德巴赫猜想啦: ");
int i,j;
printf("\n\n 请随意输入一个大于6的偶数:\n\n ");
scanf("%d",&i);
for(j=3;j<=i/2;j++)
{if(cc(j)&&cc(i-j))
{printf("\n\n %d=%d+%d",i,j,i-j);
break;}}
printf("\n\n ");}
程序说明:
这个程序最充分的体现了计算机的快,我们随意输入了一个大于6的偶数之后,计算机是在一个一个的验算是否是素数的,如果是素数,再验算其另一边是否是素数,没有任何技巧,能够瞬间完成,全凭速度快。通过这个例子,同学们可以提高对计算机应用的兴趣。
相关知识:
哥德巴赫猜想用C语言还可以有多种实现方法,请大家认真思考。
相关练习:
(1) 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3
编程找出1000以内的所有完数。
#include<stdio.h>
#include<stdlib.h>
void main( )
{system("color 3f");int i,n,sum;
for(n=1; n<=1000; n++)
{ sum=0;for(i=1;i<n;i++)
{ if(n%i==0)
{ sum=sum+i;}}
if(sum==n)
{printf("\n\n %6d是完数。",n);}}
printf("\n\n ");}
(2) 另一个输出完数的小程序
#include<stdio.h>
#include<stdlib.h>
void main( )
{system("color 3f");
int i,j,k,n,sum;
int a[1000];
for(i=2;i<=1000;i++){sum=1;a[0]=1;k=0;
for(j=2;j<=(i/2);j++)
{if(i%j==0)
{sum+=j;a[++k]=j;}}
if(i==sum)
{printf("\n\n ");
printf("%d=%d",i,a[0]);
for(n=1;n<=k;n++)
printf("+%d",a[n]);}}
printf("\n\n ");}
總结:
C语言程序设计是一门非常注重实践的课程,无论课堂教学还是上机实践,教师的童心和发散思维,都是学生们突破学习难点、提高学习兴趣和建立良好的学习习惯的强有力的助力和催化剂。
参考书籍
[1]《C程序设计》(第三版),谭浩强 著,清华大学出版社,2005年7月
[2]C程序设计题解与上机指导》(第三版),谭浩强著,清华大学出版社,2005年7月
[3]《C语言程序设计习题指导与练习》,刘宏著,清华大学出版社,2009年1月
mailto:xxjk@chinajournal.net.cn
作者简介:
杨英翔(1964.06-),男,汉族,副教授,就职于沈阳建筑大学。
mailto:xxjk@chinajournal.net.cn