C语言编写输出任意之间的所有素数
前言
首先要知道素数是什么?
素数:即除了1和它本身,不能被其它数整除的数。
编程思路:比如我们要查13是不是素数,那么就从2开始查(因为最小的素数是2),即13 / 2 = 6.5,/ 2 是因为被除数的倍数我们不需要重复查 ,所有我们只需要查被除数2 ~ 6是否被13整除即可,因为2 ~ 6都不能被13整除,有余数,所以13是素数。
程序源码
#include <stdio.h>
int main()
{
int prime(int n);
int j = 0, n, s, k;
printf("请输入查找范围的素数!\n");
printf("输入起始数:");
scanf("%d", &s);
printf("输入终止数:");
scanf("%d", &k);
printf("%d ~ %d 范围的素数有:\n", s, k);
for( n = s; n <= k; n++ ) //查找s ~ k 范围的素数
{
if( prime( n ) ) //判断n是不是素数,返回1即是素数
{
printf("%5d, ", n); //输出素数
if(++j >= 10) //输出十个素数就换行一次
{
j = 0;
printf("\n");
}
}
}
printf("\n");
return 0;
}
/******************************************************
函 数 功 能:判断一个数是不是素数
函 数 形 参:n 判断的数
函 数 返 回:不是素数返回0,是素数返回1
******************************************************/
int prime(int n)
{
int i;
if (n >= 2) // n >= 2 才有可能是素数
{
for (i = 2; i <= n/2; i++) //判断 n 在 2 ~ n/2 中有没有因数
if (n % i == 0) //如果可以除尽的数,则不是素数
return 0; //返回0
return 1; //是素数,返回1
}
return 0; // n < 2 不是素数,返回0
}