/*
2011年10月2日 15:38:11
功能:让用户输入一个数值,求出从2 到 用户所输入数值直接的所有素数 和 素数的个数!!!
*/
# include <stdio.h>
bool IsPrime(int);
void ShowPrime(int);
void CountPrime(int);
//显示2 到 用户所输入数值 之间的所有素数
void ShowPrime(int n)
{
int i;
for(i=2; i<=n; ++i)
{
if( IsPrime(i) )
printf("%d ", i);
}
}
//显示2 到 用户所输入数值 之间的所有素数的个数
void CountPrime(int q)
{
int i;
int count = 0;
for(i=2; i<=q; ++i)
{
if( IsPrime(i) )
{
count++;
}
}
printf("%d ", count);
}
//判断用户所输入的数是不是素数
bool IsPrime(int m)
{
int i;
for(i=2; i<=m; ++i)
{
if(m%i == 0)
break;
}
/*对输入的数值m进行操作,m对 i 取余,当余数为0时,再进行判断,
当i的值和m的值相同,说明m 不能被 (2到m之间的数) 整除,所以它为质数。*/
if(i == m)
return true;
else
return false;
}
int main(void)
{
int a;
printf("请输入一个数:");
scanf("%d", &a);
printf("在 2 到 %d 之间质数是: ", a);
ShowPrime(a);//调用函数
printf("\n");
printf("统计在 2 到 %d 之间质数的个数为: ", a);
CountPrime(a);//调用函数
printf("\n");
return 0;
}
/*
在Visual C++6.0中输出结果是:
_ _ _ _ _ _ _ _ _ _ _ _ _ _
请输入一个数:100
在 2 到 100 之间质数是: 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
统计在 2 到 100 之间质数的个数为: 25
Press any key to continue
_ _ _ _ _ _ _ _ _ _ _ _ _ _
*/