题目:
输出1-N之间的所有素数
要求:
为了便于观察结果,在控制台里每一行输出5个数,并且这5个数之间以空格作为分隔
思路:
首先要知道什么是素数以及如何判断一个数是不是素数,素数就是除了1和它自身外,没法被其他自然数整除的数;知道怎样判断素数之后就可以尝试用C语言实现判断了。
过程:
- 第一次写出来的代码运行出来之后,有很多的乱码,最后还是请教了学长才改过来的
- 然后我又运行了一次,emmmmm没有很顺利,我发现运行的结果里面少了一个2,直接从3开始了,下面就是运行结果没有2的样子,顺便附上代码
#include "stdio.h"
int main()
{
int i, j, n, t = 0;
printf("请输入n:");
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
for (j = 2; j * j <= i; j++)
{
if (i % j == 0)
break;
}
if (i % j != 0)
{
++t;
printf("%d\t ", i);
if (t % 5 == 0)
{
printf("\n");
}
}
}
return 0;
}
我自己改了很多遍,但是没有什么用,甚至越改越不对哈哈哈,然后我就又去请教了学长和同学,他们给我指出了上面代码存在的问题:2%2==0,就直接跳出循环,不会输出。解决方法就是:直接先输出一个2,在进行后面的循环。于是我的代码变成了这个样子:
-
#include "stdio.h" int main() { int i, j, n, t = 0; printf("请输入n:"); scanf_s("%d", &n); printf("%d\t ", 2); t++; for (i = 2; i <= n; i++) { for (j = 2; j * j <= i; j++) { if (i % j == 0) break; } if (i % j != 0) { ++t; printf("%d\t ", i); if (t % 5 == 0) { printf("\n"); } } } return 0; }
这个代码运行出来的结果就是正确的了,就像下图这样:
哈哈哈哈大功告成!
-
写代码其实也是一件需要锻炼的事情,自己写出的代码运行成功的那一刻真的挺开心的。嗯!这只是一个开始,以后要更努力一点!感谢各位帮助我的同学和学长哈哈哈哈哈笔芯~