素数

题目描述

输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。

输入描述:

输入有多组数据。
每组一行,输入n。

输出描述:

输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。

解答:

这个格式输出玩我了一年。

多组输入,while结束用 scanf()!= EOF;

最后一个素数没有空格不能用\b,因为会报错。


代码如下:

#include<stdio.h>
int main(){
	int n,i,j,flag;
	int num[10001];//2到10000,素数非0
	for(i = 2;i < 10001;i++)
		num[i] = i;
	num[1] = 0;
	for(i = 2; i < 100 ;i++){//sqrt(10000)=100
		for(j = i +1 ;j < 10001 ; j++){//剔除所有非素数
			if ( num[i] != 0 && num[j]!=0 ){
				if(num[j]%num[i] == 0)
					num[j] = 0;
			}
		}
	}
	while(scanf("%d",&n) != EOF){//循环输入n
		flag = 0;
		for ( i = 11;i < n;i += 10){
			if(num[i] != 0 ){ 
				if(flag == 0){
					printf("%d",i);
					flag = 1;
					continue;
				}
				printf(" %d", i );
			}
		}
		if(flag == 0){
			printf("-1");
		}
	}
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值