输出10000以内的第M到第N个素数(Eclipse gcc下)

    偶然发现网易公开课的在线课程居然有测试,兴致大发随手做了几个,结果尼玛,一段时间不接触了手生了,测试平台采用的是gcc gcj,这让我很无语啊,gcj提交老是报错,始终无法解决,为了一劳永逸,搞了个Eclipse+CDT+MinGW 搞起了gccj_0020.gif

    各种bug有木有,各种错误有木有,,,,�r(�s��t)�q半天就这样没了,不过最终发现了解决方法!!!

  Eclipse gcc 

    开发 建议:

  1. 新建工程一定要确定是否勾选gcc,如图所示:

  2. wKiom1P8h56joNTHAAQncwZcUWs684.jpg

  3. 一个工程里面,必建一个src资源文件夹;

  4. xxx.c 文件放在其中,且只能放一个,不然报错跟java有所不同;

  5. 严格遵守 gcc 规范,以防止出现不必要的错误;

  6. 每次编辑 .c 文件后可以手动清除生成的 Debug 和Release 文件夹,使用相关命令重新编译;

  7. 也可以后用Ctrl+B 全部编译,或者直接用Ctrl+F11运行当前项目文件(编译带执行,如果有错误按照上述步骤操作)。

下面是一个Online Course 的 作业题, WIN7 32bit +Eclipse gcc 编写!


令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。


 输入格式:


 输入    在一行中给出M和N,其间以空格分隔。


 输出格式:


 输出    从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。


 输入样例:

 5 27

 输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

Code:

#include<stdio.h>
#include<math.h>
int main() {
	void prime_num(int start, int end) {
		if (start <= end && end <= pow(10, 4)) {
			int i = 2;
			int count = 0, col = 0;
			int flag = 0;
			for (;; i++) {
				int j = 2;
				for (; j <= sqrt(i); j++) {
					if (i % j == 0) {
						flag = 1;
						break;
					}
				}
				if (flag) {
					flag = 0;
					continue;
				}
				count++;
				if (count >= start && count <= end - 1) {
					if (++col % 10 == 0) {
						printf("%d\n", i);
					} else {
						printf("%d ", i);
					}
				}
				if (count == end) {
					printf("%d", i);
					break;
				}
			}
		}
	}
	int M, N;
	scanf("%d %d", &M, &N);
	prime_num(M, N);
	return 0;
}
input:
2 30
output:
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


你可能感兴趣的:(素数,online,网易公开课,在线测试)