判断n是否为素数
一.题目条件
·题目
输入一个大于3的整数n,判断它是否为素数。(输出yes/no)
·要求
输入大于3的合数,输出no;
输入大于3的素数,输出yes。
错误输入,则输出error。
所有输出没有回车符号。
二.题目分析
- 判断质数的方法:分别除以n之前的n-1个数,若都不能整除,则为质数;否则为合数。
- 有多条语句分支,即使用选择结构。使用if语句进行判断。
- 要进行多次除法,使用for循环结构。
- 输入错误,即n<=3,打印error。
三.代码实现
#include <stdio.h>
int main() {
int n,i;
scanf_s("%d", &n);
if (n <= 3) printf("error");
else {
for (i=2; i <= n; ++i) {
if (n % i == 0) break;
}
}
if (i < n) printf("no");
else printf("yes");
return 0;
}
emmm....提交代码后,得分0?
多提交几次(调教一番),得分80(干不动了)。
四.改进
上网一查,发现判断n是/否是素数,只需判断其否/能整除前sqrt(n)个数。修正以上第一步,代码改进如下:
#include <stdio.h>
#include <math.h>
int main() {
int n;
int i;
int k;
scanf_s("%d", &n);
k = (int)sqrt((double)n);
for (i = 2; i <= k; i++)
if (n % i == 0)
break;
if (i <= 3) printf("error");
else if (i > k)
printf("yes");
else
printf("no");
return 0;
}
这下终于100噜!!!

浙公网安备 33010602011771号