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);
	}
}

代码逻辑解析:

  1. prime(int n) 函数: 该函数用来判断一个整数 n 是否为素数。
    • 循环从1到 n,判断 n 是否可以被 i 整除。
    • 如果 n 可以被 i 整除,则计数器 c 加1。
    • 如果 c 等于2,则说明 n 只有1和本身两个因子,是素数,返回1;否则返回0。
  2. main() 函数: 该函数负责获取用户输入的 nm,并调用 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语言和素数算法有所帮助。

C语言求n到m之间素数(不用数组,使用函数)

原文地址: https://www.cveoy.top/t/topic/n1pR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录