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
代码分析
-
#include <stdio.h>
:包含标准输入输出库,用于进行输入输出操作。 -
int main(void)
:定义主函数,void
表示不需要任何参数。 -
int n , k;
:声明两个整型变量n
和k
。n
用于存储用户输入的整数,k
用于在循环中计数。 -
scanf("%d",&n);
:从标准输入读取一个整数,并将其存储在变量n
中。 -
for(int i = 2; i <= n; i++)
:外层循环,从2开始遍历到n
。 -
k = 0;
:在每次外层循环的开始,将k
设置为0。k
用于标记当前数字i
是否为素数。 -
for (int j = i - 1; j > 1; j--)
:内层循环,从i-1
开始递减到2,检查i
是否有除了1和它本身之外的因数。 -
if( i % j == 0)
:如果i
能被j
整除,说明i
不是素数。 -
k++;
:如果找到因数,将k
增加1。 -
break;
:一旦找到因数,就跳出内层循环。 -
if( k == 0 )
:如果k
的值在内层循环结束后仍然是0,说明i
没有除了1和它本身之外的因数,即i
是素数。 -
printf("%d\n",i);
:如果i
是素数,就打印它。 -
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)!