找出小于等于n的素数

题目
编写一个程序,找出1~N中的所有素数,其中1<N,N为整数。
输入输出格式要求:
	1.要求每个数后面都要输出逗号,
	  请不要输出其他字符
        2.遇到异常情况,输出error
例如:
输入:5
输出:2,3,5,
输入:a
输出:error
提醒:数据最多不超过200

这个题的一个关键点在于输入为a时如何返回error,这里可以使用scanf的一个特性——当scanf读到的数据类型与要求读到的数据类型不同时会返回0,相同返回1,检测到结束返回 EOF。

可以先写出下面的代码来检验这个特性。

#include<stdio.h>

int main (){
	int a[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199};
	int i,n;
	i=0;
	if(scanf("%d",&n)==0||n<2||n>200){
		printf("error");
	}
	else{
		while(a[i]<=n){
			printf("%d,",a[i]);
			i++;
		}
	}

	return 0;
} 

以上代码太过无脑,如果其他题目中n>200,以上代码就无法执行功能了,所以需要一个计算是否为素数的函数来应对这样的情况。

#include<stdio.h>
int isprime(int m);
int main (){
	
	int i,n;
	i=2;
	if(scanf("%d",&n)==0||n<2){
		printf("error");
	}
	else{
		for(;i<=n;i++){
			if(isprime(i)){
				printf("%d,",i);
			}
		}
	}

	return 0;
}

int isprime(int m){
	int i=2,k=1;
	while(i<m){
		if(m%i==0){
			k=0;
			break;
		}
		else{
		k=1;
		i++;
		}
	}
	return k;
	
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值