首页 > ACM题库 > 九度OJ > 九度-1163-素数[解题代码]
2013
12-13

九度-1163-素数[解题代码]

题目来源:
2008年北京航空航天大学计算机研究生机试真题

题目描述:

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

输入:

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

输出:

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

样例输入:
100
样例输出:
11 31 41 61 71

cpp 代码如下:
#include<stdio.h>
#include<math.h>
int judeg(int x){
	int temp = sqrt(x);
	for(int i=2; i<=temp; i++){
		if(x%i == 0)
			return -1;
	}
	return 1;
}
int main(){
	int n;
	while(scanf("%d",&n) != EOF){
		int flag = 0;
		for(int i=11; i<n; i += 10){
			if(judeg(i)>0){
				flag = 1;
				if(i==11)
					printf("%d",i);
				else
					printf(" %d",i);
			}
		}
		if(flag == 0)
			printf("-1\n");
		else
			printf("\n");
	}
	return 0;
}

/**************************************************************
	Problem: 1163
	User: coder
	Language: C
	Result: Accepted
	Time:10 ms
	Memory:920 kb
****************************************************************/


  1. 您没有考虑 树的根节点是负数的情况, 若树的根节点是个很大的负数,那么就要考虑过不过另外一边子树了