如何找出从a到b的所有质数列表?

更新于
2026-10-10 05:23:58
1阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计476个文字,预计阅读时间需要2分钟。

如何找出从a到b的所有质数列表?

素数定义:除了1和它本身外,不再有其他因数的自然数(只能被1和它本身整除)。

错误写法分析:

1.错误写法:素数:除了1和它本身以外不再有其它的因数的自然数(只能被1和它本身整除)。

修改建议:素数:除1和自身外,不再有其他因数的自然数(只能被1和自身整除)。

2. 错误写法:素数:除了1和它本身以外不再有其它的因数的自然数(只能被1和它本身整除)。 修改建议:素数:仅能被1和自身整除,且除了1和自身外无其他因数的自然数。

3. 错误写法:素数:除了1和它本身以外不再有其它的因数的自然数(只能被1和它本身整除)。 修改建议:素数:仅由1和自身构成因数的自然数,无其他因数。

素数:除了1和它本身以外不再有其它因数的自然数(只能被1和它本身整除)

1.错误写法

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void list_prime(int a, int b) { // 列出a到b之间的每个数 for (int i = a; i < b + 1; i++) { //把列出的每一个数都除以2到y-1,看余数是否为0 for (int k = 2;k < ;k++) { if (i % k == 0) break;//跳出距离最近的for循环 } printf("%d ", i); } } int main() { int a = 0; int b = 0; scanf("%d%d", &a, &b); list_prime(a, b); return 0; }

错误原因:不管第9行的break是否执行(不管i是否能被整除),最终都会执行第11行printf。

2.正确写法

如何找出从a到b的所有质数列表?

把判断语if放在第一个for循环中,需要再引入一个is_prime函数(因为if需要一个判断条件,而这个判断条件的值位于第二个for循环中,所以引入函数可以完美解决这个问题)

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void list_prime(int a, int b) { // 列出a到b之间的全部数字,再进行判断 for (int i = a; i < b + 1; i++) { if (i == 1)//1不是素数 continue; if (is_prime(i) == 1) printf("%d ", i); } } //判断单个数字是否为素数 int is_prime(int i) { for (int k = 2;k < i;k++) { if (i%k==0) return 0; } return 1; } int main() { int a = 0; int b = 0; scanf("%d%d", &a, &b); list_prime(a, b); return 0; }


本文共计476个文字,预计阅读时间需要2分钟。

如何找出从a到b的所有质数列表?

素数定义:除了1和它本身外,不再有其他因数的自然数(只能被1和它本身整除)。

错误写法分析:

1.错误写法:素数:除了1和它本身以外不再有其它的因数的自然数(只能被1和它本身整除)。

修改建议:素数:除1和自身外,不再有其他因数的自然数(只能被1和自身整除)。

2. 错误写法:素数:除了1和它本身以外不再有其它的因数的自然数(只能被1和它本身整除)。 修改建议:素数:仅能被1和自身整除,且除了1和自身外无其他因数的自然数。

3. 错误写法:素数:除了1和它本身以外不再有其它的因数的自然数(只能被1和它本身整除)。 修改建议:素数:仅由1和自身构成因数的自然数,无其他因数。

素数:除了1和它本身以外不再有其它因数的自然数(只能被1和它本身整除)

1.错误写法

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void list_prime(int a, int b) { // 列出a到b之间的每个数 for (int i = a; i < b + 1; i++) { //把列出的每一个数都除以2到y-1,看余数是否为0 for (int k = 2;k < ;k++) { if (i % k == 0) break;//跳出距离最近的for循环 } printf("%d ", i); } } int main() { int a = 0; int b = 0; scanf("%d%d", &a, &b); list_prime(a, b); return 0; }

错误原因:不管第9行的break是否执行(不管i是否能被整除),最终都会执行第11行printf。

2.正确写法

如何找出从a到b的所有质数列表?

把判断语if放在第一个for循环中,需要再引入一个is_prime函数(因为if需要一个判断条件,而这个判断条件的值位于第二个for循环中,所以引入函数可以完美解决这个问题)

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void list_prime(int a, int b) { // 列出a到b之间的全部数字,再进行判断 for (int i = a; i < b + 1; i++) { if (i == 1)//1不是素数 continue; if (is_prime(i) == 1) printf("%d ", i); } } //判断单个数字是否为素数 int is_prime(int i) { for (int k = 2;k < i;k++) { if (i%k==0) return 0; } return 1; } int main() { int a = 0; int b = 0; scanf("%d%d", &a, &b); list_prime(a, b); return 0; }