首页 > 其他 > 详细

寻找素数

时间:2021-05-19 23:39:51      阅读:33      评论:0      收藏:0      [点我收藏+]

一.题目要求

·题目

编写一个程序,找出1~N中的所有素数,其中1<N,N为整数。

·要求

1.要求每个数后面都要输出逗号,请不要输出其他字符
2.遇到异常情况,输出error

·测试

输入:5
输出:2,3,5,

输入:a
输出:error

二.代码实现

#include <stdio.h>
#include <math.h>
#include <ctype.h>
void prime(int n, int i, int k);

int main() {
    int N;
    scanf_s("%d", &N);
    int j;
    int i = 2;
    int k;

    if (N < 2) printf("error");
    else {
        for (j = 2; j <= N; j++) {
            k = (int)sqrt((double)j);
            prime(j, i, k);
        }
    }
    return 0;
}

void prime(int j, int i, int k) {
    if (j == 2) printf("%d,", 2);
    else if (j == 3) printf("%d,", 3);
    else {
        for (i = 2; i <= k; i++)
            if (j % i == 0)
                break;
        if (i > k)
            printf("%d,", j);
    }
    return;
}

emmm...不知道为什么,这个拿不了满分。VS2019上面运行确实没问题,而码图上面却在输入a的时候报错。

三.代码改进

#include<stdio.h>
#include<math.h>
int main()
{
	int N,r,i,j;
	int isprim[1000] = { 0 };
	r = scanf_s("%d", &N);
	if (r == 1&&N>1)
	{
		for (i = 2; i <= sqrt((double)N); i++)
		{
			
			if (isprim[i] == 0)
			{
				for (j = 2 * i; j <= N; j+=i)
				{
					isprim[j] = 1;
				}
			}

		}
	}
	else
	{
		printf("error");
	}
	for (i = 2; i <= N; i++)
	{
		if (isprim[i] == 0)
			printf("%d,", i);
	}
	return 0;
}

寻找素数

原文:https://www.cnblogs.com/Akizuki-Kanna/p/14787393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!