zoukankan      html  css  js  c++  java
  • 【风马一族_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 }
  • 相关阅读:
    HDU 4278 Faulty Odometer 8进制转10进制
    hdu 4740 The Donkey of Gui Zhou bfs
    hdu 4739 Zhuge Liang's Mines 随机化
    hdu 4738 Caocao's Bridges tarjan
    Codeforces Gym 100187M M. Heaviside Function two pointer
    codeforces Gym 100187L L. Ministry of Truth 水题
    Codeforces Gym 100187K K. Perpetuum Mobile 构造
    codeforces Gym 100187J J. Deck Shuffling dfs
    codeforces Gym 100187H H. Mysterious Photos 水题
    windows服务名称不是单个单词的如何启动?
  • 原文地址:https://www.cnblogs.com/sows/p/5888266.html
Copyright © 2011-2022 走看看