解题思路:
需要用到嵌套循环,外循环表示需要判断是否为素数的数字,内循环查找数字是否有因子
查找因子用枚举法,但只需枚举到该数字的平方根即可
因为数字的因子是成对出现的,而平方根就是因子的分割点,尽管平方根可能不是整数
求平方根需要用到一个函数 sqrt( ) ,头文件是<math.h>
参考代码:
#include <stdio.h> #include <math.h> //开方函数sqrt()的头文件 int main() { int n; scanf("%d", &n); //输入n for (int i = 2; i <= n; i++) //外循环[2,n] { int j; for (j = 2; j < sqrt(i); j++) //内循环查找因子[2,sqrt(i)] { if (i % j == 0) //找到因子则跳出循环 break; } if (j > sqrt(i)) // j > sqrt(i)代表循环未被中断,即没有因子 printf("%d ", i); //输出素数 } return 0; }
0.0分
6 人评分
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:827 |
P1001 (C语言代码)浏览:836 |
WU-复数求和 (C++代码)浏览:2119 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:628 |
printf基础练习2 (C语言代码)浏览:796 |
C语言考试练习题_保留字母 (C语言代码)浏览:743 |
C二级辅导-求偶数和 (C语言代码)浏览:707 |
川哥的吩咐 (C语言代码)浏览:663 |
C语言训练-大、小写问题 (C语言代码)浏览:719 |
1052题解(链表操作)浏览:782 |
一一 2023-04-24 18:36:57 |
第二层循环的判断有问题,就比如9,9%2!=0;就直接跳到else,输出9;应该遍历完所有的2-i-1的数之后判断是不是素数再进行输出。