温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言实现100到200的素数求解

发布时间:2020-08-06 14:19:13 来源:网络 阅读:1172 作者:wx5c84977ee002d 栏目:编程语言

讲解两种算法,其实是一种,只不过第二种在第一种的的方法优化了一点:


第一种:直接取100到200之间的奇数,因为偶数肯定不是素数,然后对每个数用取余数的方法判断是不是素数,最后再判断一下出来的数是否和自身相等,相等即是素数。

代码:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int count, num1, num2 = 0;

for (num1 = 101; num1 <= 200; num1 += 2)//偶数不是素数,直接用奇数。

{

for (num2 = 2; num2 <= num1; num2++)

{

if (num1 % num2 == 0)

break;

}

if (num2 == num1 )//因为是素数的话,只有1和自身能除过。

{

printf("%d ", num1);

count++;

}

}

printf("\ncount=%d", count);

system("pause");

return 0;

}


第二种:用到了平方根的办法来减少需要判断的数,

原因是因为

C语言实现100到200的素数求解

用到这个方法,同时也将较为抽象的判断素数方法变为引入一个参数来判断,更加清楚。

代码:

//打印100到200的素数(平方根优化法)

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

int i, t, k,count = 0;

int flag = 0;//仅仅是判断是合数还是素数引入的一个参数

for (k = 100; k <= 200; k++)

{

t = sqrt(k);

for (i = 2; i <= t; i++)

{

if (k % i == 0)//判断语句你特么给我写上“==”,别在犯错了!

{

flag = 1;

break;

}

}

if (flag == 0)

{

printf("%d \n", k);

count++;

}

flag = 0;//每次循环结束,参数要归零,不然后面都是1。

}

printf("count = %d", count);

system("pause");

return 0;

}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI