一个函数可以判断一个数是不是素数

简介: 一个函数可以判断一个数是不是素数

练习
写一个函数可以判断一个数是不是素数
素数:只能被1和自己整除的数

代码演示:

define _CRT_SECURE_NO_WARNINGS

include<stdio.h>

include<math.h>

int is_prime(int n)
{

int j = 0;
for (j = 2; j <= sqrt(n); j++)//函数要写头文件
{
    if (n % j == 0)
        return 0;
}
return 1;

}
int main()
{

int count = 0;
int i = 0;
for (i = 101; i <= 200; i+=2)//偶数不用考虑了
{
    if (is_prime(i))
    {
        printf("%d ",i);
        count++;
    }
        
}
printf("\n共有%d个素数", count);
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
运行结果:

写一个函数判断一年是不是闰年
判断闰年的规则:能被4整除,并且不被100整除或能被400整除

代码演示:

define _CRT_SECURE_NO_WARNINGS

include<stdio.h>

int is_leap_year(int y)//是闰年返回1
{

 if ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0))
     return 1;
 else 
     return 0;

}
int main()
{

int year= 0;
for (year = 1000;year<= 2000; year++)
{
    if (is_leap_year(year))
    {
        printf("%d ",year);
        
    }        
}
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
运行结果:

写一个函数,实现一个整形有序数组的二分查找
代码演示:

define _CRT_SECURE_NO_WARNINGS

include<stdio.h>

int binary_search(int arr[], int k, int sz)
{

int left = 0;
int right = sz - 1;

while(left<=right)
{
    int mid = left + (right - left) / 2;
    if (arr[mid] < k)
    {
        left = mid + 1;
    }
    else if (arr[mid] > k)
    {
        right = mid - 1;
    }
    else
    {
        return mid;//找到了,返回下标mid
    }
}
return -1;//没有找到

}
int main()
{

int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, k,sz);
if (ret == -1)
    printf("找不到\n");
else
    printf("找到了,下标是:%d\n", ret);
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
因为数组下标从0开始,所以没有找到时不能返回0

运行结果:

再来看这段代码:
我们不传参数sz到函数binary_search中去,直接在函数中写:int sz = sizeof(arr) / sizeof(arr[0]);
结果是什么都找不到

define _CRT_SECURE_NO_WARNINGS

include<stdio.h>

int binary_search(int arr[], int k)
{

int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
while(left<=right)
{
    int mid = left + (right - left) / 2;
    if (arr[mid] < k)
    {
        left = mid + 1;
    }
    else if (arr[mid] > k)
    {
        right = mid - 1;
    }
    else
    {
        return mid;
    }
}
return -1;//因为数组下标从0开始,所以这里不能返回0

}
int main()
{

int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int ret = binary_search(arr, k);
if (ret == -1)
    printf("找不到\n");
else
    printf("找到了,下标是:%d\n", ret);
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
运行结果:

分析: 数组传参时为了不浪费空间,只传过去数组的首地址,那这就是一个指针,就不需要一个很大的数组了,所以arr本质上是一个指针变量,所以binary_search函数访问和使用的数组,实际上还是主函数中的数组,因此,sizeof (arr)的值为4,sizeof arr[0]的值为4,得到sz=1,那么right=0,循环直接结束,自然找不到

写一个函数,每调用一次这个函数,就会将num的值增加1
代码演示:

define _CRT_SECURE_NO_WARNINGS

include<stdio.h>

int Add(int *p)
{

(*p)++;

}
int main()
{

int num = 0;
Add(&num);
printf("%d\n", num);//1
Add(&num);
printf("%d\n", num);//2
return 0;

}

运行结果:

下期预告:

函数的嵌套调用和链式访问
函数的声明和定义
函数递归

相关文章
|
存储 算法 API
遗传算法解决经典运输问题
欢迎关注我的微信公众号:Python学习杂记
386 0
报错:tk.mybatis.mapper.provider.EmptyProvider中缺少selectOne方法!
报错:tk.mybatis.mapper.provider.EmptyProvider中缺少selectOne方法!
360 0
|
10月前
|
人工智能 安全 测试技术
山石网科×阿里云通义灵码,开启研发“AI智造”新时代
山石网科与阿里云的合作由来已久,双方在云计算、网络安全等领域保持着紧密的合作关系。此次山石网科全面接入阿里云通义灵码专属版,是双方合作关系的进一步深化,也是双方共同推动AI技术在网络安全领域应用的一次重要实践。未来,山石网科将继续与阿里云携手共进,积极探索AI技术在网络安全领域的创新应用,不断提升产品研发效率和服务质量,为用户提供更智能、更安全的网络安全解决方案,共同守护数字世界的安全!
山石网科×阿里云通义灵码,开启研发“AI智造”新时代
|
算法 机器人 Linux
Agent-Based概率模型让多无人机野外搜救更高效
【论文解读】Agent-Based概率模型、Receding Horizon规划策略、动态分区算法相结合,提升多无人机野外搜救效果
504 13
Agent-Based概率模型让多无人机野外搜救更高效
|
11月前
|
算法 C++
【C++数据结构——图】最小生成树(头歌实践教学平台习题) 【合集】
【数据结构——图】最小生成树(头歌实践教学平台习题)目录 任务描述 相关知识 测试说明 我的通关代码: 测试结果:【合集】任务描述 本关任务:编写一个程序求图的最小生成树。相关知识 为了完成本关任务,你需要掌握:1.建立邻接矩阵,2.Prim算法。建立邻接矩阵 上述带权无向图对应的二维数组,根据它建立邻接矩阵,如图1建立下列邻接矩阵。注意:INF表示无穷大,表示整数:32767 intA[MAXV][MAXV];Prim算法 普里姆(Prim)算法是一种构造性算法,从候选边中挑
159 10
|
机器学习/深度学习 数据可视化 TensorFlow
深入探索TensorBoard:使用可视化工具提升模型调试与优化的效率和效果
【8月更文挑战第31天】在深度学习领域,理解和优化复杂的神经网络模型充满挑战。TensorBoard作为TensorFlow的强大可视化工具,能帮助我们清晰地展示模型结构、激活值、损失函数变化等关键信息,从而更高效地调试和优化模型。
489 0
|
机器学习/深度学习 Java Python
代码解密 | 2024春晚刘谦魔术与约瑟夫环问题
2024春节联欢晚会中,刘谦老师的魔术节目可以说是我心目中的全场最佳~春晚刚结束网上就有大佬给出了第二个魔术(拼扑克牌)的数学模拟,也有大佬发布了代码程序。博主在模拟了魔术过程之后,也在此分享一下程序代码和思路。同时,也借此回顾一下经典的数学问题:约瑟夫环问题。
349 8
|
机器学习/深度学习 传感器 人工智能
AI与环境保护:可持续发展的伙伴
在科技日新月异的时代,人工智能(AI)不仅改变了我们的生活和工作方式,还在环保和可持续发展领域发挥重要作用。AI通过环境监测、资源优化、垃圾分类、绿色出行和环保教育等多方面的应用,为环保事业注入新活力,推动社会向更加绿色、可持续的方向发展。
|
Go 计算机视觉
在Golang高并发环境中如何进行协程同步?
在此示例中,使用互斥锁来保护对共享计数器变量 c 的访问,确保并发的 HTTP 请求不会产生数据竞争。
256 3
|
人工智能 开发者
Kimi Chat:国内AI新星,20万字超长文本处理的突破者
【2月更文挑战第12天】Kimi Chat:国内AI新星,20万字超长文本处理的突破者
3311 2
Kimi Chat:国内AI新星,20万字超长文本处理的突破者