第五章:循环控制结构程序07
让编程改变世界
Change the world by program
程序举例
NO.TWO: 求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。
即: F(1) = 1 ( n=1 ) F(2) = 1 ( n=2 ) F(n) = F(n-1)+F(n-2) ( n≥3 )程序实现:
[codesyntax lang="c"]#include <stdio.h> void main() { long int f1,f2; int i; f1=1; f2=1; for(i=1; i<=20; i++) { printf(″%12ld %12ld ″,f1,f2); if(i%2==0) { printf(″\n″); } f1=f1+f2; f2=f2+f1; } }[/codesyntax]
NO.THREE: 写一个程序,允许输入一个数m,并判断m是否为素数?
提示: 素数又称质数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。算法思想:
让m被2到k除,如果m能被2~k之中任何一个整数整除,则提前结束循环,此时i必然小于或等于k; 如果m不能被2~k之间的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。 在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~k之间任一整数整除过,因此输出“是素数”。程序实现:
[codesyntax lang="c"]#include <stdio.h> #include <math.h> void main() { int m,i,k; scanf(″%d″,&m);k=sqrt(m); for (i=2;i<=k;i++) if(m%i==0) break; if(i>k) { printf("%d is a prime number\n″,m); } else { printf("%d is not a prime number\n″,m); } }[/codesyntax]
题目升级:求100~200间的全部素数并打印出来。
程序实现:
[codesyntax lang="c"]#include <stdio.h> #include <math.h> void main() { int m,k,i,n=0; for(m=101;m<=200;m=m+2) { k = sqrt(m); for(i=2;i<=k;i++) { if(m%i==0) break; } if(i>=k+1) { printf("%d ″,m); n=n+1; } if(n%10==0) { printf(″\n″); } } printf ("\n"); }[/codesyntax]