先贴一个下原题:
设计一个算法将一个正整数划分成3个互不相同个素数之和,如果可以就输出这3个素数,否则输出错误信息。以下是代码内容:
-
#include <stdio.h>
-
#include <math.h>
-
-
-
//定义1000以内的数
-
#define t 1000
-
//判断是否是素数
-
bool issushu(int n){
-
int k = (int)sqrt(n);
-
int j;
-
for(j=2;j<=k;j++){
-
if(n%j != 0){
-
}else{
-
return false;
-
}
-
}
-
return true;
-
}
-
//分解用户输入的数字为三个互不相同的素数之和
-
void fenjiesushu(int num) {
-
int i,m,n,l;
-
int j=0;
-
int count=0;
-
int count_keneng=0;
-
int sushu[t]={0};
-
for(i=2;i<num;i++) {
-
if(issushu(i)) {
-
sushu[j]=i;
-
count++;
-
j++;
-
}
-
}
-
for(m=0;m<count-2;m++) {
-
for(n=m+1;n<count-1;n++) {
-
for(l=n+1;l<count;l++) {
-
if(num == sushu[l]+sushu[m]+sushu[n]) {
-
count_keneng++;
-
printf("三个数分别是:%d %d %d\n",sushu[m],sushu[n],sushu[l]);
-
}
-
}
-
}
-
}
-
if(count_keneng==0) {
-
printf("没有这三个数\n");
-
}
-
}
-
-
-
int main() {
-
int number;
-
printf("please input a number:");
-
scanf("%d", &number);
-
printf("number:%d\n", number);
-
fenjiesushu(number);
-
return 0;
-
}
有需要的同学,参考一下吧,写得不是够好,欢迎提出建议交流一下~
阅读(1837) | 评论(0) | 转发(0) |