/*
判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
*/
- main()
- {
- int m,i,k,h=0,leap=1;
- printf("/n");
- for(m=101;m<=200;m++)
- {
- k=sqrt(m+1);
- for(i=2;i<=k;i++)
- {
- if(m%i==0) //假如m%i全都不等于0,这不会这行下面语句,leap==1不变,就执行下面if语句
- {
- leap=0; //设置一个标记,表示到这里面执行了一下
- break;
- }
- }
- if(leap)
- {
- printf("%-4d",m);
- h++;
- if(h%10==0)
- printf("/n");
- }
- leap=1;
- }
- printf("/nThe total is %d./n",h);
- return 0;
- }
这个题目最主要的地方在于如何判断一个数是不是素数;而判断素数的方法几经给我们了,然而要解决的问题无非就是i%j==0的情况不只一个。这个是一种解决方法.....
对比下一个用“标签”的形式:
- #include <stdio.h>
- #include <cmath>
- bool sushu(int i);
- int main()
- {
- int i,count=0;
- for(i=101;i<=200;i++)
- {
- if(sushu(i))
- {
- printf("%d/t",i);
- count++;
- }
- }
- printf("/n共有素数%d个。/n",count);
- return 0;
- }
- //用一个bool函数来判断是不是素数,是素数返回ture,否则返回flase
- bool sushu(int i)
- {
- for(int j=2;j<=sqrt(i);j++)
- {
- if(i%j==0)
- {
- return 0; //只要出现一个i%j==0;则i不是素数,返回0;
- // break;
- }
- }
- return 1; //这个返回一定要到for循环外面,指i%j都不==0的情况下,返回1;
- }