日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

整数求因数算法

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 整数求因数算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對一個整數求因數的計算在編程題中比較常見,還有在求出因數后對因數構成的數組再進行操作。例如,求一個整數的所有因數的求和結果,若是求和結果等于該整數,稱這個整數為“完全數”,現在需要對輸入的一個整數進行判斷。首先是確定整數應該測試因數的范圍,最直觀的是將整數num依次循環除以2~num-1所有數,挑出余數為0的數。事實上,這樣測試使循環次數增加了,例如32=4*8,只需要測試出4,就已經知道8也滿足條件了。所以,在循環進行測試的時候,測試到num的平方根就可以了。

編寫一段程序測試完全數:

#include<iostream>
#include<cmath>
using namespace std;int perfectNumberCheck(int);
int main(){int num;cin >> num;if(perfectNumberCheck(num)){cout << num << " is a perfect number!"<< endl;}else cout << num << " is not a perfect number!"<< endl;return 0;
}
int perfectNumberCheck(int num){int count=0;int b[num]={0};int a=sqrt(num);for(int i=2;i<=a;i++){if(num%i==0){b[count]=i;count++;}}int sum=0;for(int i=0;i<count;i++){sum+=(b[i]+num/b[i]);}if(sum+1==num) return 1;else return 0;
}
/*
int perfectNumberCheck(int num){int count=0;int b[num]={0};for(int i=2;i*i<=num;i++){ //直接使用i*i,可以避免使用開平方運算if(num%i==0){b[count]=i;count++;}}int sum=0;for(int i=0;i<count;i++){sum+=(b[i]+num/b[i]);}if(sum+1==num) return 1;else return 0;
}
*/

測試結果:

在最后一次測試過程中,將for循環的起點改為了0,此時相當于num%0運算,因此出現了“浮點數例外(核心已轉儲)”的問題。

總結

以上是生活随笔為你收集整理的整数求因数算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。