码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-20 19:43:45      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

 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     else
24         //让用户重新输入
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     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 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个数字中的所有素数

标签:

原文地址:http://www.cnblogs.com/sows/p/5888266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!