输出100以内的素数

···输出100以内素数的关键是明白素数的概念:只能被自身或1整除的数叫素数。0和1都不是素数。
···应该想到用for循环,既然0,1不是素数,那循环就应从2开始,到100。
···要判断能不能整除其他数,就应该想到用循环嵌套,在一层for循环的基 础上去对比它小的数取余(注意应从2开始)。
···其次,考虑用什么方法记录素数。因为只有素数和非素数,于是用1和0来标记素数和非素数。
···最后,在一层循环内输出标记为1的所有数。
···如果j的for用j<=i/2,注意一定是<=,下面的if条件也要改为(j>i)。(i如果不是素数,就一定能写成a*b的形式,a、b中一定有一个数是小于i/2的)

#include<stdio.h>
int main(void){
    int i;
    for(i=2;i<=100;i++){
        int isPrime = 1;
        int j;
        for(j=2;j<i;j++){ //(j)
            if(i%j==0){
                isPrime = 0;
                break;
            }
        }
        /*(另外一种判断方法)break跳到这里,j++到头也来到这里,但只有j++到头得到的才是素数,所以要进行判断:
        if(j==i){
              printf("%d ",i);
        }
        */
        if(isPrime==1){
            printf("%d ",i);
        }
    }
    return 0;
}

当然代码可以优化,使得效率更高。

#include<stdio.h>
#include<math.h> //数学库函数
int main(void)
{
    int i = 0;
    for(i=3; i<=100; i+=2){ //只判断奇数
        int j = 0;
        for(j=2; j<sqrt(i); j++){ //小于根号下i
            if(i%j==0)
                break;
        }
        if(j>sqrt(i))
            printf("%d ",i);
    }
    return 0;
}
  • 23
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值