Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103643758
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-17 21:54:11

 来源:hur.cn

#include
main()
{
int r;
float area;
for(r=1;r<=5;r++)
{
area=3.141593*r*r;
if(area<50.0)
continue;
printf("square=%f",area);
}
}
结果为:
RUN
square=50.265488
square=78.539825
同break一样,continue语句也仅仅影响该语句本身所处的循环层,而对外层循环没有影
响。
3.4.5程序应用举例
[例3-18]验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示,例如:
4=2+2
6=3+3
......
98=19+79
哥德巴赫猜想是世界著名的数学难题,至今未能在理论上得到证明,自从计算机出现后,人们就开始用计算机去尝试解各种各样的数学难题,包括费马大定理、四色问题、哥德巴赫猜想等,虽然计算机无法从理论上严密地证明它们,而只能在很有限的范围内对其进行检验,但也不失其意义。费马大定理已于1994年得到证明,而哥德巴赫猜想这枚数学王冠上的宝石,至今无人能及。
分析:我们先不考虑怎样判断一个数是否为素数,而从整体上对这个问题进行考虑,可
以这样做:读入一个偶数n,将它分成p和q,使n=p+q。怎样分呢?可以令p从2开始,每次加1,而令q=n-p,如果p、q均为素数,则正为所求,否则令p=p+q再试。
其基本算法如下:
1)读入大于3的偶数n。
2)P=1
3)do{
4)p=p+1;q=n-p;
5)p是素数吗?
6)q是素数吗?
7)}whilep、q有一个不是素数。
8)输出n=p+q。
为了判明p、q是否是素数,我们设置两个标志量flag p和flag q,初始值为0,若p是素数,
令flag p=1,若q是素数,令flag q=1,于是第7步变成:
7)}while(flag p*flag q==0);
再来分析第5、第6步,怎样判断一个数是不是素数呢?
素数就是除了1和它自身外,不能被任何数整除的整数,由定义可知:
2、3、5、7、11、13、17、19等是素数;
1、4、6、8、9、10、12、14等不是素数;
要判断i是否是素数,最简单的办法是用2、3、4、⋯⋯i-1这些数依次去除i,看能否除尽,
若被其中之一除尽,则i不是素数,反之,i是素数。
但其实,没必要用那么多的数去除,实际上,用反证法很容易证明,如果小于等于i的平
方根的数都除不尽,则i必是素数。于是,上述算法中的第5步、第6步可以细化为:
第5)步p是素数吗?
flag p=1;
for(j=2;j<=[sqrt(p)];j++)
ifp除以j的余数=0
{flag p=0;
break;}
第6)步q是素数吗?
flag q=1;
for(j=2;j<=[sqrt(q)];j++)
ifq除以j的余数=0
{flag q=0;
break;}
程序如下:
#include
#include
main()
{
intj,n,p,q,flag p,flag q;
printf("please input n:");
scanf("%d",&n);
if(((n%2)!=0)||(n<=4))
printf("inputdataerror!\n");
else
{
p=1;
do{
p=p+1;
q=n-p;
flag p=1;
for(j=2;j<=(int)(floor(sqrt((double)(p))));j++)
{
if((p%j)==0)
{
flag p=0;
break;
}
}
flag q=1;
for(j=2;j<=(int)(floor(sqrt((double)(q))));j++)
{
if((q%j)==0)
{
flag q=0;
break;
}
}
}while(flag p*flag q==0);
printf("%d=%d+%d\n,"n,p,q);
}
}
程序运行结果如下:
RUN¿
please input n:8
8=3+5
RUN
please input n:98
98=19+79
RUN
please input n:9
input data error!
阅读(250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~