[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
如果要得出所有的切割法呢?
[此贴子已经被作者于2016-12-17 06:05编辑过]
#include <stdio.h> int isprime(char* s,int sp,int len) {//取出串s指定开始位置sp处长度为len的数字转换为整数并判断是否为素数 int i,j; for(i=0,j=0;i<len;i++)j=j*10+s[i+sp]-'0'; for(i=2;i*i<=j&&j%i;i++); return j>1&&i*i>j; } int fun(char *s,int start) { int i,j,k; if(!s[start])return 1; for(i=6;i;i--) //倒着分割可以尽量使分割的次数减少,每次都获取一个最大的素数 { j=0; if(isprime(s,start,i))j=fun(s,start+i); if(j) { for(k=0;k<i;k++)printf("%c",s[start+k]); printf(","); return 1; } } if(!start)printf("无法进行全部的素数分割!"); return 0; } void main() { char s[]="1447160917891993"; //char s[]="1111111111111111111111131"; //char s[]="14471609178919938"; fun(s,0); printf("\n"); }