• 【风马一族_C】c语言版,在2到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     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	",num[i]);
    50         ++i;
    51         
    52         //当连续输出10个元素时,就跳行 
    53         if(i%10==0)
    54             printf("
    ");        
    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	",num[i]);
     50         ++i;
     51         
     52         //当连续输出10个元素时,就跳行 
     53         if(i%10==0)
     54             printf("
    ");        
     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         

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

    第四种方式,这是进一步的更新,增加 每次运行完后,提示用户是否想重新玩一次,

      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	",num[i]);
     50         ++i;
     51 
     52         //当连续输出10个元素时,就跳行
     53         if(i%10==0)
     54             printf("
    ");
     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 //运用完一次后,判断用户是否想重新再来一次
     75 void EndlessLoop() {
     76 
     77     int number=InNumber();   //输入函数,函数使用完,返回数值
     78     more(number);
     79 
     80     printf("
    
    你是否重新再来一次,请输入1,不要请输入其它字符:  ");
     81     int boNum;
     82     scanf("%d",&boNum);
     83     if(boNum==1) {
     84         EndlessLoop();
     85     } else {
     86         //退出 不处理
     87     }
     88 }
     89 
     90 int main(int argc, char** argv) {
     91 
     92     //1:输入数据
     93     //1:确保数字大于2的正整数 isNaN()
     94     //2:判断数据是否为素数
     95     //1:使用for(),让程序提供n次检测的机会
     96     //2:使用prime()判断每个数据是否为素数
     97     //3:输出结果
     98 
     99     /***************************************************
    100         主支干上,
    101             设计模式
    102                 函数接收外界的数据,使用完后,反馈数据
    103                 这种一进一去的函数设计方式,称之为 什么好呢!
    104         分支干上,
    105             用来辅助主支干的函数的需要
    106     ***************************************************
    107         目的:变量的数据在函数内处理,函数外的数据由函数来处理
    108         意料发现:这样全局变量就不用存在了
    109         从函数来看:函数从外界获取数据,并向外界反馈数据
    110         设计模式:略学了设计模式,不知道这种方式算什么方式
    111 
    112     ******************************************************/
    113     //int number=InNumber();   //输入函数,函数使用完,返回数值
    114     //more(number);             //中间处理, 可惜c无法直接返回数组,用指针的话,又说数组长度要用固定长度,
    115     //需要用指针的话,或许可以让它返回数据
    116 
    117     //OutNumber();             //输出 ,因为more(number)没有返回数据,此方法待定
    118 
    119     EndlessLoop();
    120 
    121     return 0;
    122 }
  • 相关阅读:
    sql
    字符和字符串处理例子
    如何用火狐设置代理
    数组指针的一个小例子
    (转)数组指针和指针数组的区别
    函数
    (转)C语言指针5分钟教程
    通俗版解释网关,IP地址,ARP欺骗,DDOS攻击
    计算网络地址
    计算机网络性能指标
  • 原文地址:https://www.cnblogs.com/sows/p/5888266.html
Copyright © 2020-2023  润新知