一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - C語(yǔ)言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)的個(gè)數(shù)

C語(yǔ)言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)的個(gè)數(shù)

2022-03-03 14:28小輝_Super C/C++

本文詳細(xì)講解了C語(yǔ)言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)個(gè)數(shù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。需要的朋友可以收藏下,方便下次瀏覽觀看

本人C語(yǔ)言萌新,最近工作中頻頻出現(xiàn)C語(yǔ)言小錯(cuò)誤,遂決定使用笨方法提高我的C語(yǔ)言水平,堅(jiān)持每天一個(gè)C語(yǔ)言小練習(xí),養(yǎng)成C語(yǔ)言手感,從此讓編程成為習(xí)慣。

題目描述

統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)的個(gè)數(shù)

分析

素?cái)?shù)(prime number)又稱質(zhì)數(shù),在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的數(shù)稱為質(zhì)數(shù),2是最小的素?cái)?shù)。

代碼實(shí)現(xiàn)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
 
#define INTEGER_RANGE 100  //數(shù)字范圍
 
int if_prime(int num);
 
int main()
{
    int sum = 0;
    /* 2是最小的素?cái)?shù),for循環(huán)范圍為2-100 */
    for(int i = 2; i <= INTEGER_RANGE; i++)
    {
        if(if_prime(i))
            sum++;
    }
    printf("%d以內(nèi)的素?cái)?shù)個(gè)數(shù)為:%d\n", INTEGER_RANGE, sum);
    return 0;
}
 
/*
 * 判斷是否為素?cái)?shù),是則返回1,否返回0
 * */
int if_prime(int num)
{
    int i = 0;
    for(i = 2; i < num; i++)
    {
        /* 如果該數(shù)有存在1以外的其他正因數(shù),則不是素?cái)?shù) */
        if(num % i == 0)
            return 0;
    }
    return 1;
}

運(yùn)行結(jié)果

C語(yǔ)言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)的個(gè)數(shù)

后期完善

這里只對(duì)if_prime(num)函數(shù)進(jìn)行完善:

  1. 增加非法數(shù)字的判斷,num小于2直接返回0
  2. 將循環(huán)范圍由2~num-1改成2~sqrt(num)

至于為什么用sqrt,這里借用下別人的解釋(比較通俗易懂)

當(dāng)一個(gè)數(shù)不是素?cái)?shù)的時(shí)候,那這數(shù)肯定是除了它本身和1外的兩個(gè)數(shù)之積( a*b = m ),如果設(shè) a是小于或者等于 b的數(shù),那 a肯定是小于等于 m的開(kāi)根,即 a <= sqrt( m ) 。——百度貼吧(C語(yǔ)言吧)

還有一種用法是把num改成num/2,但是當(dāng)num大于4時(shí),sqrt(num)num/2小,所以用sqrt(num)的效率比用num/2高。
至于為什么可以用num/2,這里也借用別人的解釋(有點(diǎn)難懂)

其實(shí)這是數(shù)學(xué)知識(shí),n不除以2也行,只是運(yùn)算量更大,其實(shí)最少運(yùn)算量的方法是n開(kāi)根號(hào)。
我證明一下合理性吧。用反證法。
如果一個(gè)數(shù)是合數(shù),則一定能分解成兩個(gè)不是1的數(shù)相乘,所以能被分解成一個(gè)大于等于2的數(shù)和一個(gè)小于等于n/2相乘。
如果這個(gè)數(shù)沒(méi)有一個(gè)小于等于n/2的因數(shù),那它一定不是合數(shù),所以它一定是素?cái)?shù),不用再檢查后面的數(shù)了。這里是小于n/2,是因?yàn)槿绻@個(gè)數(shù)能被n/2整除,那2一定是它的因數(shù),很容易知道2小于等于n/2,所以在檢查n/2之前一定檢查過(guò)2。證明完成!
n開(kāi)根號(hào)也差不多這樣證明。——https://fishc.com.cn/thread-181309-1-1.html

如果你對(duì)上面的兩種用法都不理解,那記住它們就行了。。。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <math.h>
/*
 * 判斷是否為素?cái)?shù),是則返回1,否返回0(改進(jìn)版)
 * */
int if_prime(int num)
{
    if(num < 2)
        return 0; //最小的素?cái)?shù)為2
    int i = 0;
    //sqrt():開(kāi)方函數(shù)(一定要寫(xiě)小于等于)
    for(i = 2; i <= sqrt(num); i++)
    {
        /* 如果該數(shù)有存在1以外的其他正因數(shù),則不是素?cái)?shù) */
        if(num % i == 0)
            return 0;
    }
    return 1;
}

網(wǎng)上參考

原文鏈接:https://www.runoob.com/cprogramming/c-exercise-example36.html
sqrt()為開(kāi)方函數(shù),需要加math.h頭文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//  Created by www.runoob.com on 15/11/9.
//  Copyright © 2015年 菜鳥(niǎo)教程. All rights reserved.
//
 
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,k,n=0;
    for(i=2;i<=100;i++)
    {
        k=(int)sqrt(i);
        for(j=2;j<=k;j++)
            if(i%j==0) break;
        if(j>k)
        {
            printf("%d ",i);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
    return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/weixin_43772810/article/details/120212643

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 婷婷综合缴情亚洲五月伊 | 国产在线乱子伦一区二区 | 婚前试爱全集免费观看 | 无限韩国视频免费播放 | 国产精品调教 | 亚洲玖玖 | 亚洲精品福利你懂 | 国产成人综合久久精品红 | 91制片厂果冻传媒杨柳作品 | 大东北chinesexxxx露脸 | 驯服有夫之妇HD中字日本 | 国产专区日韩精品欧美色 | 日本免费一区二区三区 | 亚洲国产情侣偷自在线二页 | 亚洲欧美久久一区二区 | 黄 色 成 年人在线 幻女free性俄罗斯第一次摘花 | 欧美撒尿屁股嘘嘘撒尿 | chaopeng在线观看 | 国产精品欧美韩国日本久久 | 国色天香视频资源网 | 美国女孩毛片 | 精品美女国产互换人妻 | 美国雪白人妖sarina | 精品视频中文字幕 | 久草在线精彩免费视频 | 日韩欧美一区二区三区中文精品 | 91香蕉影院| 国产日韩精品欧美一区 | 亚洲经典 | 草留色区 | 欧美日本道免费一区二区三区 | 奇米久草 | 青青青视频免费线看 视频 青青青青青国产免费手机看视频 | a级成人毛片免费图片 | 床戏小说 | 天天爽天天干天天操 | 国产精品久久毛片蜜月 | 久久成人永久免费播放 | 香蕉精品视频 | 99资源在线观看 | 男人躁女人过程 |