首页 > 代码库 > 【数据结构】C语言实现,寻找n个数字中的所有素数

【数据结构】C语言实现,寻找n个数字中的所有素数

 1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4  5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 6  7 //判断用户输入的数据是否大于2的正整数 8 bool isNaN(int number) { 9     if(number>2)10         return true;11     else    12         return false;13 }14 15 16 //输入数据的函数 17 int InNumber(){18     int number;19     printf("请输入一个大于2的正整数");20     scanf("%d",&number);21     if(isNaN(number))22         return number;23     else24         //让用户重新输入25         InNumber();         26 }27 28 //判断一个数字大于2的正整数是否为素数 29 bool prime(int number){30     31     int numI=2;32     double sum=0;33     34     do{35         sum=number%numI;36         if(sum==0){37             return true;38             break;39         }else{40             ++numI;41         }42     }while(numI<number);    43         44     return false;45 }46 47 //循环n次数 48 void more(int number){49     int num[number];50     int j=0;51     for(int i=3;i<=number;++i){52         if(prime(i)){53             num[j]=i;54             ++j;55         }            56         else{57                 }    58     }59     60     61     62     63     /*int numI=3;64     bool bo=prime(numI);65     int numPrime[number];66     int i=0;67     if(bo){68         numPrime[i]=numI;69         ++i;70     }else{71         //放弃    72     }73     74     if(numI<number){75         ++numI;76         more(numI);    77     }    */78 }79 80 int main(int argc, char** argv) {81     82     //1:输入数据83         //1:确保数字大于2的正整数 isNaN() 84     //2:判断数据是否为素数85         //1:使用for(),让程序提供n次检测的机会86         //2:使用prime()判断每个数据是否为素数 87     //3:输出结果 88     89     int number=InNumber();90     more(number);91     return 0;92 }

 ------------------------------------------------------------------------------------

 1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4  5 //判断用户输入的数据是否大于2的正整数 6 bool isNaN(int number) { 7     if(number>2) 8         return true; 9     else10         return false;11 }12 13 14 //输入数据的函数15 int InNumber() {16     int number;17     printf("请输入一个大于2的正整数");18     scanf("%d",&number);19     if(isNaN(number))20         return number;21     else22         //让用户重新输入23         InNumber();24 }25 26 //判断一个数字大于2的正整数是否为素数27 bool prime(int number) {28 29     int numI=2;30     double sum=0;31 32     do {33         sum=number%numI;34         if(sum==0) {35             return true;36             break;37         } else {38             ++numI;39         }40     } while(numI<number);41 42     return false;43 }44 45 //按每行最多10个元素的输出素数 46 void OutNumber(int num[],int primeJ){47     int i=0;48     do{49         printf("%d\t",num[i]);50         ++i;51         52         //当连续输出10个元素时,就跳行 53         if(i%10==0)54             printf("\n");        55     }while(i<primeJ);56 }57 58 //n次循环,处理每个数字,记录素数 59 void more(int number) {60     int num[number];61     int primeJ=0;    //记录素数的数量62     for(int i=3; i<=number; ++i) {63         if(prime(i)) {64             num[primeJ]=i;65             ++primeJ;66         } else {67             // 记录合数的数量68         }69     }70     71     OutNumber(num,primeJ);    72 }73 74 int main(int argc, char** argv) {75 76     //1:输入数据77     //1:确保数字大于2的正整数 isNaN()78     //2:判断数据是否为素数79     //1:使用for(),让程序提供n次检测的机会80     //2:使用prime()判断每个数据是否为素数81     //3:输出结果82 83     int number=InNumber();   //输入 84     more(number);             //中间处理 85  86     87     //OutNumber();             //输出 88     89     return 0;   90 }91                      

 ---------------------------------------------------------------------------------------------------------------------

第三个方式

  1 #include <iostream>  2 #include <stdio.h>  3 #include <math.h>  4   5 //判断用户输入的数据是否大于2的正整数  6 bool isNaN(int number) {  7     if(number>2)  8         return true;  9     else 10         return false; 11 } 12  13  14 //输入数据的函数 15 int InNumber() { 16     int number; 17     printf("请输入一个大于2的正整数"); 18     scanf("%d",&number); 19     if(isNaN(number)) 20         return number; 21     else 22         //让用户重新输入 23         InNumber(); 24 } 25  26 //判断一个数字大于2的正整数是否为素数 27 bool prime(int number) { 28  29     int numI=2; 30     double sum=0; 31  32     do { 33         sum=number%numI; 34         if(sum==0) { 35             return true; 36             break; 37         } else { 38             ++numI; 39         } 40     } while(numI<number); 41  42     return false; 43 } 44  45 //按每行最多10个元素的输出素数  46 void OutNumber(int num[],int primeJ){ 47     int i=0; 48     do{ 49         printf("%d\t",num[i]); 50         ++i; 51          52         //当连续输出10个元素时,就跳行  53         if(i%10==0) 54             printf("\n");         55     }while(i<primeJ); 56 } 57  58 //n次循环,处理每个数字,记录素数  59 int more(int number) { 60     int num[number]; 61     int primeJ=0;    //记录素数的数量 62     for(int i=3; i<=number; ++i) { 63         if(prime(i)) { 64             // 记录合数 65         } else {             66             num[primeJ]=i; 67             ++primeJ; 68         } 69     } 70      71     OutNumber(num,primeJ); 72 } 73  74 int main(int argc, char** argv) { 75  76     //1:输入数据 77     //1:确保数字大于2的正整数 isNaN() 78     //2:判断数据是否为素数 79     //1:使用for(),让程序提供n次检测的机会 80     //2:使用prime()判断每个数据是否为素数 81     //3:输出结果 82  83     /*************************************************** 84         主支干上, 85             设计模式 86                 函数接收外界的数据,使用完后,反馈数据 87                 这种一进一去的函数设计方式,称之为 什么好呢! 88         分支干上, 89             用来辅助主支干的函数的需要  90     *************************************************** 91         目的:变量的数据在函数内处理,函数外的数据由函数来处理 92         意料发现:这样全局变量就不用存在了  93         从函数来看:函数从外界获取数据,并向外界反馈数据 94         设计模式:略学了设计模式,不知道这种方式算什么方式  95       96     ******************************************************/ 97     int number=InNumber();   //输入函数,函数使用完,返回数值  98     more(number);             //中间处理, 可惜c无法直接返回数组,用指针的话,又说数组长度要用固定长度, 99                              //需要用指针的话,或许可以让它返回数据 100      101     //OutNumber();             //输出 ,因为more(number)没有返回数据,此方法待定 102     103     return 0;   104 }105         

 

【数据结构】C语言实现,寻找n个数字中的所有素数