首页 > 编程知识 正文

打印素数 C语言,tcl语言命令打印

时间:2023-05-06 18:57:22 阅读:187548 作者:2383

打印素数

素数:只能被1和它本身整除的数,也叫质数

素数判断的规则:

1.试除法

例如,我判断13是否为素数,我就要用1-12之间的所有数字被他除一遍,如果都有余数,说明13是素数

我们写代码的时候,要产生2到i-1的数字

//打印100--200之间的素数int main() {int i = 0;for (i = 100; i <= 200; i++) { //这种场景下写<=200就行//判断i是否为素数int j = 0;for (j = 2; j < i; j++) {//j为2到i-1之间的数字,最后一遍循环时,j=iif (i % j == 0) {//如果可以整除说明i不是素数,则跳出循环break;}} //出来这个for循环可能是i不是素数然后break了,也有可能是全都不能整除,i是素数,遍历完了跳出来了if (j == i) { //所以我写这个if是为了来筛选这两种情况,上面j如果加到i的话,说明是素数了printf("%d ", i);}}return 0;}

优化2.0:

如果i不是素数,i=a*b,那么a,b中至少有一个数字<=开平方i

开平方要调用数学库函数sqrt(),要引用#include<math.h>

#include <math.h>int main() {int i = 0;for (i = 100; i <= 200; i++) {int j = 0;for (j = 2; j <= sqrt(i); j++) {//在这里用了开平方函数sqrt(i)--表示对i开平方if (i % j == 0)break;}if (j > sqrt(i)) { //修改了这里,上一步for循环里最后一步j加到了sqrt(i)+1的大小printf("%d ", i);}}return 0;}

继续优化3.0:

因为偶数绝对不可能是素数,所以我们可以把偶数干掉,就直接把我们的判断效率提高了一倍

#include <math.h>int main() {int i = 0;for (i = 101; i <= 200; i+=2) {//这样只判断101--200之间的奇数就行int j = 0;for (j = 2; j <= sqrt(i); j++) {if (i % j == 0)break;}if (j > sqrt(i)) { printf("%d ", i);}}return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。