prime的作用就是判断一个数是否为素数(也称“质数”)。
例如:
#include
int IsPrime(int n)
{
if (n <= 1) return 0;
if (n % 2 == 0) return n == 2;
for (int i = 3; ; i += 2)
{
if (i > n/i) break; // 等价于 i*i > n, 不用开方
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
for (int n = 100; n <= 300; n++)
if (IsPrime(n))
printf("%4d", n);
return 0;
}
prime算法
prime是以点为基础出发进行检索最小生成树的一种贪心算法。
思想:
将所有的点分成两类,一类是已经放到碗里的,另一类是还没有有放到碗里的,可以通过一个数组bool visit[]来记录这个点到底是属于第一类还是属于第二类之后每一个周期索要进行的操作,找出一一定范围内路径的的范围的最小值。
所有的从第一类点直接连接到第二类点的边将最小的边记录下来(这个也就是生成树中的一条边)将这个新边(这个一个连接第一类点和第二类点的边)连到的那个第二类点归类到第一类点中,之后重复这个操作,最终消灭所有的第二类点。
假设有n个节点,我最初给出一个点,以这个点开始进行搜索,这个时候该点为第一类点,其余n-1个点为第二类点。之后进行n-1次操作,一共选出了n-1个边(符合树的性质),构成了最小生成树。
你没有把代码贴出来,人家怎么知道prime的作用是什么呢?就一般而言,prime的作用就是判断一个数是否为素数(也称“质数”)。各种函数是指自己定义的函数还是库函数?若是库函数,这就需要自己去看相关资料掌握。若是自己定义的函数,那作用自己应该清楚不过了。例如,说个简单点的自定义函数——求两个整数的和,代码如下:int Sum(int a, int b){ return (a + b);}
1、一般而言,prime的作用就是判断一个数是否为素数(也称“质数”)。各种函数是指自己定义的函数还是库函数?若是库函数,这就需要自己去看相关资料掌握。若是自己定义的函数,那作用自己应该清楚不过了。
2、例如:
#include
int IsPrime(int n)
{
if (n <= 1) return 0;
if (n % 2 == 0) return n == 2;
for (int i = 3; ; i += 2)
{
if (i > n/i) break; // 等价于 i*i > n, 不用开方
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
for (int n = 100; n <= 300; n++)
if (IsPrime(n))
printf("%4d", n);
return 0;
}
头文件前使用#,表示预处理,加入到工程中一并编译。
其他用法:
在printf中的%后面的那个#是用来格式说明的,
如果在g,G,f,e或者E代码前加一个#,可以确保显示一个小数点(即使没有小数位),
在o之前加上则输出八进制,
在p,x或者X之前则确保输出十六进制
例如上面的那个就是把地址按照十六进制形势输出.
在编译时,#的作用是,把后面的变元转化为带引号的串.
例如上面的#define FUN(a) cout<<#a;代表的就是把a当作一个字符串输出,比如FUN(123\n);将会输出123以及一个回车.
##的作用才是在编译的时候把前后连接起来.
例如:
#include
#define concat(a,b) a##b
int main(void)
{
int xy=10;
printf("%d",concat(x,y));
//即是: printf("%d",xy);
return 0;
}
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
假设b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a1=8。
对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
逗号运算符的优先级最小