博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(算法)求1,2,3,4,5共有多少种质数组合且不能同时出现一个数多次
阅读量:6072 次
发布时间:2019-06-20

本文共 1662 字,大约阅读时间需要 5 分钟。

 

#include <stdio.h>

#include <math.h>

#define MAX_NUM 54321 //组合上限

#define MAX_LEN 100  //结果数组最大长度

#define N 5    //组合数最大长度

 

//判断一个数是不是质数 int isPrime(int n);

//切分整数到数组中 void cutNum(int n, int * tArr, int * len);

//判断数组中数据是否越界 int isIn(int * tArr, int len);

//判断数组中数据是否重复 int isNoRep(int * tArr, int len);

//打印数组 void printArr(int * tArr, int len);

 

int main() {  

 int i;

 int cnt; //结果数量

 int len; //数字长度  

 int iArr[MAX_LEN]; //数组保存结果

 

 int tArr[N]; //临时数组保存中间结果    

 //取数  for (i=2, cnt=0; i < MAX_NUM; i++)

 {

  //切割数到数组中  

 cutNum(i, tArr, &len);

  //判断数有没有越限   

if (!isIn(tArr, len))   

{    

  continue;  

 }     

 //判断数有没有重复   if (!isNoRep(tArr, len))  

 {   

   continue;   

}      

//判断是不是质数  

   if (!isPrime(i))   

{    

  continue;  

 }

  //满足条件保存到结果数组中  

 iArr[cnt] = i;   

cnt++;   

 }

 //打印结果  printArr(iArr, cnt);  getchar(); }

//判断一个数是不是质数

int isPrime(int n)

{

 int i;    

int rst = 1;    

for (i=2; i <= sqrt(n); i++)

 {   

  if(0 == n % i)  

   {    

    rst = 0;    

    break;   

  }

 }

 return rst;

}

//切分整数到数组中

void cutNum(int n, int * tArr, int * len)

{  

int i;

 for(i = 0; n > 0; i++)  {   tArr[i] = n % 10;   n /= 10;  }

 *len = i;

}

//判断数组中数据是否越界 int isIn(int * tArr, int len)

{

  int i;

  int rst = 1;    

  for (i = 0; i < len; i++)  

  {  

     if ((tArr[i] > 5) || (0 == tArr[i]))   

    {    

      rst = 0;    

      break;   

    }

   }

 return rst;

}

//判断数组中数据是否重复 int isNoRep(int * tArr, int len)

{  

 int i, j;

 int rst = 1;    

for (i = 0; i < len-1; i++)

 {

    for(j = i + 1; j < len; j++)  

   {    

      if (tArr[i] == tArr[j])  

      {     

      rst = 0;     

      break;    

      }  

   }  

}

 return rst; 

}

//打印数组 void printArr(int * tArr, int len)

{  

int i;

 for (i = 0; i < len; i++)

 {  

   printf("%d\t", tArr[i]);

 }  

printf("\n共%d\n", len);

}

 

转载于:https://www.cnblogs.com/ethanwill/archive/2013/05/31/3110560.html

你可能感兴趣的文章
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>