您的位置:首页 > 编程语言

0基础学编程之打印100-200之间的素数(质数)

2018-03-20 23:13 369 查看
题目:打印100-200的素数,并输出素数个数。
判断素数的方法:(方法顺序对应代码顺序)
1.正常思路:首先创建100-200的数,用2到这个数减1分别整除这个数,如果能整除,则表示此数不是素数,反之是素数。
2.更优思路:一个数m能够写出m=a*b的形式,如果a不等于b,那么其中一个数一定小于根号下的m。所以只需要判断2-sqrt(m)能否整除m,如果能整除,则表示此数不是素数,反之是素数。
3.偶数不可能是素数,所以直接排除所有的偶数,代码在源代码上改变,就不给代码了,2,4中有运用
4..用这个数去除2到这个数加1的平方根范围中的每一个数,如果能整除,则表示此数不是素数,反之是素数。

5.实现一个函数,判断一个数是不是素数。 
源代码1:
#include<stdio.h>
int main()
{
int i, j, m;
for(i=100; i<201; i++)   //i从100-200
{
for(j=2; j<i; j++)  j从2到i
{
if(i%j==0)      //i除j取余的结果为0,判断条件成立 
{
break;       //即这个数不是素数,跳出这个for循环 
}
}
   if(j==i)
   m++;
   printf("%d\t", i);    //i除j取余的结果不为0,即这个数是素数,输出这个数
}
printf("\nm=%d\n", m);     //输出素数个数 
return 0;
源代码2:
#include <stdio.h>
#include <math.h>

int main()
{
        int i = 0;
int count = 0;
for(i=101; i<=200; i+=2)
{
//i是否为素数
int j = 0;
        for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
源代码4:
#include<stdio.h>
#include<math.h>
int main()
{
int i, j, k, m=0;
for (i = 101; i <= 200; i+=2)             //i从100-200(直接排除偶数)
{
k = sqrt((double)(i + 1));           //(i+1)的平方根,复制给k
for (j = 2; j <= k; j++)              //j从2到k    
{
if (i%j == 0)                //i除j取余的结果为0,判断条件成立 
{
break;                 //即这个数不是素数
}
}
if (j >= k)
{
   m++;
printf("%-4d", i);     //i除j取余的结果不为0,即这个数是素数,输出这个数
}

}
printf("\nm=%d\n", m);
return 0;
}
运行结果:



5.#include<stdio.h>
int prime(int x)
{
int i=0;
for(i=2;i<x; i++)
{
if(x%i==0)
return 0;
}
if(i=x)
return 1;
}
int main()
{
int m=0;
int ret=0;
printf("请输入一个数:\n");
scanf("%d", &m);
ret = prime(m);
if(ret==0)
printf("不是素数\n");
else
printf("是素数\n");
return 0;
}
有什么地方不懂得或者有改进的地方可以留言交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  素数 质数 c/c 0基础