网站开发摊销期多少年,宣传海报用什么软件做,拍照搜索百度识图,炒股配资网站建设题目描述
输入两个正整数m和n#xff0c;输出m和n之间的所有素数。 要求程序定义一个prime()函数和一个main()函数#xff0c;prime()函数判断一个整数n是否是素数#xff0c;其余功能在main()函数中实现。 int prime(int n) { //判断n是否为素数#xff0c; 若n为素数…题目描述
输入两个正整数m和n输出m和n之间的所有素数。 要求程序定义一个prime()函数和一个main()函数prime()函数判断一个整数n是否是素数其余功能在main()函数中实现。 int prime(int n) { //判断n是否为素数 若n为素数本函数返回1否则返回0 }
输入
输入两个正整数m和nmn且都在int范围内。
输出
输出占一行。输出m和n之间的所有素数每个数后有一个空格。测试数据保证m到n之间一定有素数。
样例输入
2 6
样例输出
2 3 5
思路 这个题目和之前的求素数的很像只是要求用函数判断该数是不是素数是的话就输出通过循环进行判断m,n之间有多少素数。
代码
#include stdio.h
#include math.hint prime(int n);int main()
{int m, n;scanf(%d %d, m, n);for (int i m; i n; i){if (prime(i)){printf(%d , i);}}return 0;
}int prime(int n)//求素数
{if (n 1){return 0;}for (int j 2; j sqrt(n); j)//用sqrt(n)可以减少循环的次数降低时间复杂度和空间复杂度{if (n % j 0){return 0;}}return 1;
}
求素数的方法很多那就可以多想一下哪种算法好。下面也是一种求素数的方法但不是这个题的解法只不过下面的算法求素数时间复杂度和空间复杂度更低。
#include stdio.h
#include stdlib.h
#include stdbool.hvoid prime(int n);int main()
{int n;scanf(%d, n);//输入上限prime(n);return 0;
}void prime(int n)
{bool* prime (bool*)malloc((n 1) * sizeof(bool)); // 动态分配布尔数组的内存空间// 初始化所有数为质数for (int i 0; i n; i) {prime[i] true;}// 开始筛法从 2 开始到根号 nfor (int p 2; p * p n; p) {if (prime[p] true) {for (int i p * p; i n; i p) {prime[i] false;}}}// 输出所有质数for (int p 2; p n; p) {if (prime[p]) {printf(%d\n, p);}}// 释放动态分配的内存free(prime);
}