题目描述
输入2个正整数m, n(m<=n),求它们之间的素数个数,m和n也考虑在内。
输入格式
正整数m和n,空格隔开。
输出格式
素数个数
样例输入
2 5
样例输出
3
怎么做到范围内求素数个数?只知道素数的判断方法
#include <stdio.h>
int main()
{
int n, i;
scanf("%d", &n);
if (n == 1) {
printf("no");
} else if (n == 2) {
printf("yes");
} else {
for (i = 2; i < n; i++) {
if (n % i == 0) {
printf("no");
return 0;
}
}
if (n > 1) {
printf("yes");
}
}
return 0;
}
#include <stdio.h>
int foo(int n)
{
if (n == 1) {
return 0;
} else if (n == 2) {
return 1;
} else {
int i;
for (i = 2; i < n; i++) {
if (n % i == 0) {
return 0;
}
}
if (n == i) {
return 1;
}
}
}
int main()
{
int m, n, i, cnt = 0;
scanf("%d %d", &m, &n);
for (i = m; i <= n; i++)
{
if (foo(i)) cnt++;
}
printf("%d", cnt);
return 0;
}
供参考:
#include <stdio.h>
int isprime(int n)
{
int i;
if (n < 4)
return n > 1;
for (i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
int main()
{
int m, n, i, cnt = 0;
scanf("%d%d", &m, &n);
for (i = m; i <= n; i++)
if (isprime(i)) cnt++;
printf("%d", cnt);
return 0;
}
【以下回答由 GPT 生成】
要在给定范围内求素数个数,可以采用以下步骤来编写C语言程序:
首先,需要检查输入的两个正整数m和n是否满足条件:m <= n。如果不满足条件,可以输出错误信息并结束程序。
定义一个函数isPrime,用于判断一个数是否为素数。该函数需要输入一个整数作为参数,返回一个布尔值(true表示是素数,false表示不是素数)。
2.1. 判断数num是否小于等于1,如果是,则num不是素数,返回false。
2.2. 初始化一个变量i为2,循环从2到num-1。
2.2.1. 如果num能够被i整除(即num%i等于0),则num不是素数,返回false。
2.2.2. 否则,继续循环。
2.3. 如果循环结束时,都没有找到能够整除num的数,则num是素数,返回true。
定义一个变量count,用于记录素数的个数,并初始化为0。
循环从m到n,对每个数进行判断。
4.1. 如果当前数i是素数(即调用isPrime函数返回true),则count加1。
下面是完整的C语言代码示例:
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i < num; i++) {
if (num % i == 0)
return false;
}
return true;
}
int main() {
int m, n;
int count = 0;
// 输入m和n
scanf("%d %d", &m, &n);
// 检查m和n是否满足条件
if (m > n) {
printf("Invalid input!\n");
return 0;
}
// 循环判断素数个数
for (int i = m; i <= n; i++) {
if (isPrime(i))
count++;
}
// 输出素数个数
printf("%d\n", count);
return 0;
}
请注意,该代码只是一个示例,可能并不是最优解。在实际的程序中,可以根据具体情况做一些优化,例如:
希望对你有帮助!如果有任何疑问,请随时提出。
【相关推荐】
你可以看一看我的这个博客,可能会对你有帮助!http://t.csdn.cn/QDuv1