例1:
判断一个数字是否为素数:
#include<stdio.h> //引用标准库I/O函数
#include<stdbool.h> // 引用bool函数 ,dev中bool不是关键字
bool is_prime(int val) //声明is_prime函数
{
int i;
for(i=2;i<val;i++)
{
if(val%i==0)
break;
}
if(val==i)
return true;
else
return false; //判断是否为真
}
int main(void)
{
int val;
printf("请输入一个大于 1 的数!\n"); //输入
scanf("%d",&val);
if(is_prime(val)) //输出
printf("yes!");
else
printf("no!");
return 0;
}
例2:
利用前一个例子,封装两个函数用于输出1~n的所有素数
#include<stdio.h> //引用标准库I/O函数
#include<stdbool.h> // 引用bool函数 ,dev中bool不是关键字
bool is_prime(int val); //先声明函数,顺序后其他函数可以调用该函数
void TraverVal(int n) //一个遍历函数,并调用 is_prime函数
{ int tab[n];
int i;
for(i=0;i<n;i++) //给数组赋值
{
tab[i] = i+1;
if(is_prime(tab[i])) //调用is_prime函数
printf("%-5d ",tab[i]);
//这里不可以填return; 最好就不要填写返回值,不需要返回值。
}
}
bool is_prime(int val) //声明is_prime函数 ,功能为判断一个数是否为素数
{
int i;
for(i=2;i<val;i++) //遍历2~val
{
if(val%i==0) //判断是否能够被整除
break; //可以整除则跳出循环
}
if(val==i) //被除数与除数相同
return true; //输出为真
else
return false; //判断是否为假
}
int main(void)
{ printf("请输入一个大于 1 的数\n");
printf("本程序将输出1~n!的所有素数 n = "); //输入
int n;
scanf("%d",&n);
TraverVal(n);
return 0;
}
/*
在遍历函数提前填写了return导致函数提前结束,切记
在Dev-c++ 5.11中的运行结果为:
————————————————
请输入一个大于 1 的数
本程序将输出1~n!的所有素数 n = 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
--------------------------------
Process exited after 4.675 seconds with return value 0
请按任意键继续. . .
请输入一个大于 1 的数
本程序将输出1~n!的所有素数 n = 200
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 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
--------------------------------
Process exited after 3.733 seconds with return value 0
请按任意键继续. . .
*/