/* Name: 查找素数 Copyright: GPL2.0 Author: heigger Date: 10-03-11 20:06 Description: 用户输入一个数,输出该数范围内所有的素数。 PostScript:在算法优化上 ,如果各位朋友有更好的算法,希望能留言指导,将感激不尽。 Problem:如果用户输入了一个大于10000的数,在输出时,如何格式化输出? 在printf("%5d",i);中,假设整数i的位数不定,我如何动态改变输出格式,如: printf("%6d",i); printf("%7d",i); .....printf("%nd",i); 这样程序就可以根据整数i的位数不同可以动态改变输出格式的位数。 */ #include <stdio.h> //#include <stdbool.h> //该头文件包含了以下三个宏,包含该头文件后,可不用再定义以下宏 #define false 0 #define true 1 #define bool _Bool //C99新增_Bool类型表示布尔值 //isPrime()判断 一个整数是否为素数(即质数) bool isPrime(int n) //_Bool { int i; if(n==1) return false; if(n==2) return true; int m = (int)sqrt(n); for(i =2; i <= m; i++) { if(n%i==0) return false; } return true; } void findPrime(int max) { int i,count = 0; for(i = 2;i<=max; i++) { if(isPrime(i)) printf("%5d",i); } printf("/n"); } int main(int argc, char* argv[]) { int max =0; printf("请输入一个10000以内的整数: "); scanf("%d",&max); while(max>10000) { printf("请输入10000以内的数/n"); scanf("%d",&max); } findPrime(max); system("pause"); return 0; }