判断n是否为素数

一.题目条件

·题目

输入一个大于3的整数n,判断它是否为素数。(输出yes/no)

·要求

输入大于3的合数,输出no;
输入大于3的素数,输出yes。
错误输入,则输出error。
所有输出没有回车符号。

二.题目分析

  1. 判断质数的方法:分别除以n之前的n-1个数,若都不能整除,则为质数;否则为合数。
  2. 有多条语句分支,即使用选择结构。使用if语句进行判断。
  3. 要进行多次除法,使用for循环结构。
  4. 输入错误,即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噜!!!

posted @ 2021-05-17 21:58  酸柚子sour  阅读(1319)  评论(0)    收藏  举报
Akizuki-Kanna