函数、素数判断
2025-01-22 09:31:39
发布于:北京
函数的基础,就是一段有功能的程序
以主函数为例
int main () {
return 0;
}
函数类型:int
函数类型由函数想要返回的数据决定
void 表示不需要返回值,但可以用 return 结束程序
返回值:return 0;
比如返回的是字符,那么函数类型得是 char
函数名称:main
函数名称最好以函数的功能命名,例如
素数判断:is_Primer()
传递参数:()
函数执行的范围:{ } 内部
函数 max 和 min
一般,只能判断两个 同类型 的数据大小
max 取大值
min 取小值
参数传递的方式:
数值传递
int foo(int x);
int foo(int x, int y);
int foo(string s, long long a);
质数定义:
大于等于 2 的自然数,它的因子只有 1 和它本身的数,称之为质数,或素数。
针对 n 这个整数
方式一:
在范围 1~n 之间,数一数 n 的因子有多少个
若只有 2 个,则是素数,否则不是
bool isprimer(long long n) {
int cnt = 0;
for (int i = 1; i <= n; i ++) {
if (n % i == 0) {
cnt ++;
}
}
return cnt == 2;
}
方式二:
在范围 2 ~ n-1 之间,数一数 n 的因子有几个
但凡能找到一个因子,它都不是素数
bool isprimer(long long n) {
if (n < 2) return false;
for (int i = 2; i <= n - 1; i ++) {
if (n % i == 0) {
// 找到了一个因子,所以
// 它不是素数
return false;
}
}
// 上面找不到因子,所以它是一个素数
return true;
}
方式三
由于因子基本是成双成对的,所以只需要判一半的因子即可
2 ~ sqrt(n)
sqrt(n) 是指,对 n 开平方,比如 sqrt(16) = 4,因为 4*4 = 16
bool isprimer(long long n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i ++) {
if (n % i == 0) {
// 找到了一个因子,所以
// 它不是素数
return false;
}
}
// 上面找不到因子,所以它是一个素数
return true;
}
这里空空如也
有帮助,赞一个