自学内容网 自学内容网

C语言题目:筛选N以内的素数

题目描述

用简单素数筛选法求N以内的素数。

输入格式

N

输出格式

2~N的素数

样例输入

100

样例输出

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

 

代码分析

  1. #include <stdio.h>:包含标准输入输出库,用于进行输入输出操作。

  2. int main(void):定义主函数,void表示不需要任何参数。

  3. int n , k;:声明两个整型变量nkn用于存储用户输入的整数,k用于在循环中计数。

  4. scanf("%d",&n);:从标准输入读取一个整数,并将其存储在变量n中。

  5. for(int i = 2; i <= n; i++):外层循环,从2开始遍历到n

  6. k = 0;:在每次外层循环的开始,将k设置为0。k用于标记当前数字i是否为素数。

  7. for (int j = i - 1; j > 1; j--):内层循环,从i-1开始递减到2,检查i是否有除了1和它本身之外的因数。

  8. if( i % j == 0):如果i能被j整除,说明i不是素数。

  9. k++;:如果找到因数,将k增加1。

  10. break;:一旦找到因数,就跳出内层循环。

  11. if( k == 0 ):如果k的值在内层循环结束后仍然是0,说明i没有除了1和它本身之外的因数,即i是素数。

  12. printf("%d\n",i);:如果i是素数,就打印它。

  13. return 0;:主函数返回0,表示程序正常结束。

整体流程分析:

  • 程序首先从用户那里读取一个整数n
  • 然后,使用一个for循环从2遍历到n
  • 对于每个数字i,程序使用另一个for循环检查它是否有除了1和它本身之外的因数。
  • 如果没有找到因数,即k的值为0,那么i就是素数,程序将其打印出来。

 源代码

#include <stdio.h>
int main(void)
{
    int n , k;
    scanf("%d",&n);
    for(int i = 2; i <= n; i++)
    {
        k = 0;
        for (int j = i - 1; j > 1; j--)
        {
            if( i % j == 0)
            {
                k++;
                break;
            }
        }
        if( k == 0 )
            printf("%d\n",i);
    }
    return 0;
}


原文地址:https://blog.csdn.net/qq_42686081/article/details/144065195

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!