//第一次尝试:
#define
_CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int isPrimeNum(int num) { if (num == 0 || num == 1) { return 0; } for (int i = 2; i < num; i++) { if (num % i == 0) { return 0; } } return 1; } int main() { printf("请输入一个数:\n"); int num = 0; scanf("%d", &num); if (isPrimeNum(num) == 0) { printf("不是素数!\n"); } else { printf("是素数!\n"); } for (int i = 100; i <= 200; i++) { if (isPrimeNum(i) == 1) { printf("%d ",i); } } return 0; }
//此代码利用函数的封装功能,将判断的函数封装起来,不影响主函数可读性
//用户输入一个数字,判断是否是素数
//另外在判断的时候,要考虑到所有情况,0,1要单独列出来判断(处理异常)
//第二次尝试:
#define
_CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include <math.h> int isPrimeNum(int num,int nums) { if (num == 0 || num == 1) { return 0; } for (int i = 2; i <= nums; i++) { if (num % i == 0) { return 0; } } return 1; } int main() { printf("请输入一个数:\n"); int num = 0; int nums = 0; scanf("%d", &num); nums = (int)sqrt((double)num); if (isPrimeNum(num,nums) == 0) { printf("不是素数!\n"); } else { printf("是素数!\n"); } for (int i = 100; i <= 200; i++) { nums = (int)sqrt((double)i); if (isPrimeNum(i,nums) == 1) { printf("%d ",i); } } return 0; }
//在上一个代码中,处理的过程不够优化
//在判断n是否是素数时,只需判断n能否被2~sqrt(n)整除即可,所以不必判断那么多次