C语言求n到m之间素数(不用数组,使用函数)
C语言求n到m之间素数 (不用数组,使用函数)
本文将介绍如何用C语言代码求解n到m之间的所有素数,代码中不使用数组,并采用函数来判断素数。
代码示例:
#include<stdio.h>
int prime(int n) {
int i, c = 0;
for (i = 1; i <= n; i++)
if (n % i == 0)
c++;
if (c == 2)
return 1;
else
return 0;
}
int main() {
int n, m, i;
scanf('%d %d', &n, &m);
for (i = n; i <= m; i++) {
if (prime(i) == 1)
printf('%d ', i);
}
}
代码逻辑解析:
prime(int n)函数: 该函数用来判断一个整数n是否为素数。- 循环从1到
n,判断n是否可以被i整除。 - 如果
n可以被i整除,则计数器c加1。 - 如果
c等于2,则说明n只有1和本身两个因子,是素数,返回1;否则返回0。
- 循环从1到
main()函数: 该函数负责获取用户输入的n和m,并调用prime()函数判断每个数字是否为素数。- 循环从
n开始,到m结束,调用prime(i)判断当前数字i是否为素数。 - 如果
i是素数,则输出i。
- 循环从
常见的错误和解决方法:
题目要求输出n到m之间的素数,而原始代码中for循环的起始值是 m,终止值是 n,这样输出的是m到n之间的素数。需要将for循环的起始值改为 n,终止值改为 m,才能输出n到m之间的素数。
修改后的代码如下:
#include<stdio.h>
int prime(int n) {
int i, c = 0;
for (i = 1; i <= n; i++)
if (n % i == 0)
c++;
if (c == 2)
return 1;
else
return 0;
}
int main() {
int n, m, i;
scanf('%d %d', &n, &m);
for (i = n; i <= m; i++) { // 将起始值改为 n,终止值改为 m
if (prime(i) == 1)
printf('%d ', i);
}
}
总结:
本文介绍了用C语言代码实现求解n到m之间所有素数的方法,并详细解释了代码逻辑和常见的错误及解决方法。希望本文对您学习C语言和素数算法有所帮助。
原文地址: https://www.cveoy.top/t/topic/n1pR 著作权归作者所有。请勿转载和采集!