解题思路:
需要用到嵌套循环,外循环表示需要判断是否为素数的数字,内循环查找数字是否有因子
查找因子用枚举法,但只需枚举到该数字的平方根即可
因为数字的因子是成对出现的,而平方根就是因子的分割点,尽管平方根可能不是整数
求平方根需要用到一个函数 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语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:1066 |
众数问题 (C语言代码)浏览:821 |
剪刀石头布 (C语言代码)浏览:748 |
1050题解(结构体数组与结构体指针的使用)浏览:1105 |
The 3n + 1 problem (C语言代码)浏览:501 |
妹子杀手的故事 (C语言代码)浏览:1045 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:656 |
printf基础练习 (C语言代码)浏览:1787 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:479 |
回文数(一) (C语言代码)浏览:1117 |
一一 2023-04-24 18:36:57 |
第二层循环的判断有问题,就比如9,9%2!=0;就直接跳到else,输出9;应该遍历完所有的2-i-1的数之后判断是不是素数再进行输出。