如何求素数

输入一个整数,然后显示所有小于或等于该数的素数。(提示:素数是指除了 1 和它
本身以外,不能被任何整数整除的数,例如 17 就是素数,因为它不能被 2~16 的任一整数整除。 实际 上只判断不能被 2~8 整除就可以。
  1.要求所有素数,一个数除以它之前所有数都无法余0(1除开和自己);假如整数为11,那么要从2开始到11中的数来排查,而一个数又要除从1到11的数来判断。所以用双循环。
  2.但我们可以排除偶数,优化程序,偶数必有2这个因子。
#include<stdio.h>
int main()
{
    int input, i, j;
    scanf("%d", &input);
    if (input >= 2)
       printf("2\n");
    for (i = 3; i <= input; i += 2)
    {
        for (j = 2; j <= i; j++)//j假如从1算那程序会在第一次直接跳出,算不出。
        {
            if (i % j == 0)
            {
                 break;若i%j在其中某部分可以就符合条件,那后面就不用算,跳出循环
            }
        }
        if (j >= i)//判断i和j的大小,决定i是否在j未到i之前就被整除;
        {
            printf("%d\n", i);
        }
    }
    return 0;
}

注 2也是素数,不要忘记!

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i s s a

感谢大佬支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值