C语⾔_101到200之间有多少个素数时间:2020年9⽉4⽇ 17:20:45
/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
另⼀种思路:
素数:⼤于1,并且除了1 和本⾝以外不能被其他数整除,这样的数为素数
编程:i > 1 && i % for( j = 2 ; j < i ;j ++) == 0 不是素数 反之为素数
*/
说明:
为了区分两种代码执⾏的效率,我把101 ~ 200的范围给成了101 ~ 200000。
⽅法⼀ ⽤时差不多要 5 秒。(算法抽象,需要调试 F11理解过程)
⽅法⼆ ⽤时差不多要 11 秒左右。
-------------分界线---------------------
⽅法⼀:
/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
另⼀种思路:
素数:⼤于1,并且除了1 和本⾝以外不能被其他数整除,这样的数为素数
编程:i > 1 && i % for( j = 2 ; j < i ;j ++) == 0 不是素数反之为素数
*/
//时间:2020年9⽉4⽇ 17:21:10
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int m, i, k, h =0, leap =1;
printf("\n");
for(m =101; m <=200000; m++)// m ⽤来遍历 101到200之间的数
{
k =sqrt(m);
// double sqrt(double);说明:sqrt系Square Root Calculations(平⽅根计算)
for(i =2; i <= k; i++)
{
if(m % i ==0)
{
leap =0;
break;
}
}
if(leap)// false取值0,true取值 1或者-1(补码)
{
printf("%-4d\t", m);
h++;
if(h %10==0)// for循环执⾏到第10次,就换⾏;所以⼀⾏输出10个数
printf("\n");
}
leap =1;// 结束了第2个for循环后,初始化 leap = 1
}
printf("\nThe total is %d\n", h);
printf("\nThe duration is %lf s\n",((double)clock()/ CLOCKS_PER_SEC)); system("pause");
return;
}
⽅法⼆:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int i, j;
for(i =101; i <=200000; i++)
c++判断素数{
for(j =2; j < i; j++)
{
if(i % j ==0)
break;
else
if(j == i -1)
printf("%d\t", i);
}
}
printf("\nThe duration is %lf s\n",(double)clock()/CLOCKS_PER_SEC); system("pause");
return;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论