A(5,2) = 20
C(5,2) = 10
13 is prime.
27 is not prime.
#include <stdio.h>
// 求排列数的函数, 我一般用A, 你要改成P的话也可以
int A(int n, int r)
{
if(r > n)
return -1; // 如果r > n返回-1表示出错
int temp = 1;
for(; r > 0; --r)
temp *= n--;
return temp;
}
// 求组合数的函数
int C(int n, int r)
{
if(r > n)
return -1; // 同上
if(r == 0 || r == n) // Cn0 = Cnn = 1 加快速度
return 1;
return A(n, r) / A(r, r); // 根据公式Cnr = Anr / Arr
}
// 检测一个数是否是素数, 是的话返回真
int IsPrime(int n)
{
if(n == 0 || n == 1) // 0和1是素数
return 1;
int div;
for(div = n/2; n%div != 0; --div); // div = n/2就已经排除了这个数本身
return div == 1; // 如果没有1个以上的数能被这个数整除, 那么这个数就是素数
}
int main()
{
printf("A(5,2) = %d\n", A(5,2));
printf("C(5,2) = %d\n", C(5,2));
if(IsPrime(13))
printf("13 is prime.\n");
else
printf("13 is not prime.\n");
if(IsPrime(27))
printf("27 is prime.\n");
else
printf("27 is not prime.\n");
}
温馨提示:内容为网友见解,仅供参考