帮我编写两个C语言程序,具体内容在问题补充上有..

一定用C语言编写,简要写出算法分析,以及程序代码
1.编写两个函数,分别用于计算组合和排列,比如:C(5,2)=10,P(5,2)=20;2.编写一个函数,用于测试一个整数是否是素数,比如:13是素数,27不是素数。

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");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-26
main()
{int x,i,t=1;
i=2;
scanf("%d",&x);
while(i<x)
{if(x%i==0)t=0;i++;}
if(t) printf("Yes\n");
else printf("No\n");
}

哎呀,真费尽啊!
相似回答
大家正在搜