目录
练习4:编写一个函数,每调用一次这个函数,就会将num的值增加1。
练习1:写一个函数判断一个数是不是素数。
不用函数方法如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main(void)
{
int i;
int k = 2;
int flag = 1; //假设n就是素数
scanf("%d", &i);
while (i > 1)
{
//m = a * b
//a和b中一定至少有一个数字是 <= 开平方m的
//比如 16 = 2*8 = 4*4
//所以下面用sqrt()开平方函数可以减少运算时间
for (k = 2; k <= sqrt(i); k++)
//sqrt()是开平方函数,需要头文件#include<math.h>
{
if (i % k == 0)
{
flag = 0;
//printf("%d\n", k); //这行我用来测试
break;
//此处加break的作用是,只要能被k整除就可以断定不是素数了,不需要继续k++去判断
//比如45,能被3整除,就可以判断不是素数了,不需要再用k=4,k=5……判断
}
}
if (flag == 1)
{
printf("%d是素数", i);
break;
}
else
{
printf("%d不是素数", i);
break;
}
}
if (i <= 1)
printf("%d不是素数", i);
return 0;
}
使用函数方法如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int is_primer(int n)
{
int k = 2;
int flag = 1; //假设n就是素数
//m = a * b
//a和b中一定至少有一个数字是 <= 开平方m的
//比如 16 = 2*8 = 4*4
//所以下面用sqrt()开平方函数可以减少运算时间
for (k = 2; k <= sqrt(n); k++)
//sqrt()是开平方函数,需要头文件#include<math.h>
{
if (n % k == 0)
{
flag = 0;
//printf("%d\n", k); //这行我用来测试
break;
//此处加break的作用是,只要能被k整除就可以断定不是素数了,不需要继续k++去判断
//比如45,能被3整除,就可以判断不是素数了,不需要再用k=4,k=5……判断
}
}
return flag;
}
int main(void)
{
int i;
scanf("%d", &i);
while (i > 1)
{
if (is_primer(i) == 1)
{
printf("%d是素数", i);
break;
}
else
{
printf("%d不是素数", i);
break;
}
}
if (i <= 1)
printf("%d不是素数", i);
return 0;
}