在 Java 中我們有不同類型的功能;史密斯號(hào)碼是提供給使用者的功能。基本上,史密斯數(shù)只不過是一個(gè)合數(shù)(在數(shù)係中以10為底),其所有數(shù)字之和等於其所有質(zhì)因數(shù)(不包括1)所有數(shù)字之和,這就是所謂的史密斯數(shù)數(shù)字。史密斯數(shù)的另一個(gè)名稱是笑話數(shù)。根據(jù)定義,我們可以說,如果滿足條件,所有質(zhì)數(shù)都被自然排除。通常,史密斯數(shù)是根據(jù)使用者要求及其問題陳述的一些要求在數(shù)學(xué)中使用的數(shù)字系統(tǒng)的一個(gè)非常基本的子欄位。
開始您的免費(fèi)軟體開發(fā)課程
網(wǎng)頁開發(fā)、程式語言、軟體測(cè)試及其他
史密斯數(shù)背後的邏輯
現(xiàn)在讓我們來看看史密斯數(shù)背後的邏輯如下。
史密斯數(shù)的邏輯很簡(jiǎn)單,我們考慮一下下面的數(shù)字,我們就很容易理解如下邏輯了。
範(fàn)例:假設(shè)我們需要檢查給定的數(shù)字是否為史密斯號(hào)碼。
給定的數(shù)字是:95
首先,我們要找出 95 的質(zhì)因數(shù)是 19 和 5 (5, 19)
現(xiàn)在求數(shù)字和 9 + 5 = 14
質(zhì)因數(shù)總和為 5 + 1 + 9 = 15
現(xiàn)在比較兩個(gè)結(jié)果,看這裡 14 不等於 15。所以給定的數(shù)字不是素?cái)?shù)。
讓我們考慮另一個(gè)數(shù)字,如下所示。
給出的數(shù)字:58
先找出 58 = 2 和 29 的質(zhì)因數(shù)
質(zhì)因數(shù)總和 = 2 + 2 +9 = 13
給定數(shù)字的總和 = 5 + 8 = 13
現(xiàn)在比較兩個(gè)結(jié)果,這裡兩個(gè)結(jié)果是相同的,或者我們可以說是相等的。所以我們可以說給定的數(shù)字是史密斯數(shù)。
這就是史密斯數(shù)背後非常簡(jiǎn)單的邏輯,我們只需要比較素?cái)?shù)階乘和與數(shù)字和即可。如果兩個(gè)總和相等,則給定的數(shù)字是史密斯數(shù),否則該數(shù)字不是史密斯數(shù)。
如何在Java中檢查史密斯數(shù)?
現(xiàn)在讓我們看看如何在 java 中檢查給定的數(shù)字是否是 smith。
在上面這一點(diǎn)中,我們已經(jīng)討論了史密斯數(shù)的不同範(fàn)例?,F(xiàn)在讓我們來看看尋找史密斯編號(hào)的不同步驟,如下所示。
1.首先我們需要初始化或讀取使用者的數(shù)字。
2.之後我們需要找出給定數(shù)字的數(shù)字總和。
3.接下來我們要找出給定數(shù)字的質(zhì)數(shù)因子。
4.現(xiàn)在計(jì)算質(zhì)因數(shù)的數(shù)字和。
5.現(xiàn)在比較給定數(shù)字的數(shù)字和與質(zhì)因數(shù)的數(shù)字和。
a.如果兩個(gè)和相等,那麼我們可以說給定的數(shù)字是史密斯數(shù)。
b.否則,我們可以認(rèn)為給定的數(shù)字不是史密斯數(shù),因?yàn)榭偤筒煌?
所以上述步驟對(duì)於用Java實(shí)作史密斯數(shù)程式很有用。
範(fàn)例
現(xiàn)在讓我們看看java中史密斯數(shù)的不同範(fàn)例,以便更好地理解,如下。
範(fàn)例#1
代碼:
import java.util.*; public class Smith_Num { static int F_Sum_P_Fact(int no) { int j=2, add=0; while(no>1) { if(no%j==0) { add=add+F_S_Digit(j); no=no/j; } else { do { j++; } while(!isPrime(j)); } } return add; } static int F_S_Digit(int no) { int sum=0; while(no>0) { sum=sum+no%10; no=no/10; } return sum; } static boolean isPrime(int j) { boolean b=true; int d=2; while(d<Math.sqrt(j)) { if(j%d==0) { b=false; } d++; } return b; } public static void main(String args[]) { Scanner s_c = new Scanner(System.in); System.out.print("Enter a number: "); int no=s_c.nextInt(); int x = F_S_Digit(no); int y = F_Sum_P_Fact(no); System.out.println("addition of digit = "+x); System.out.println("addition of prime factors digits is = "+y); if(x==y) System.out.print("The user enterd number is smith number."); else System. out.print("The user entered number is not smith number."); } }
說明
在上面的程式中,我們嘗試用java實(shí)作史密斯數(shù)程式。在這裡,我們首先創(chuàng)建了質(zhì)因數(shù)數(shù)字總和的函數(shù);同樣,我們還創(chuàng)建了函數(shù)來查找給定數(shù)字的數(shù)字總和,如上面的程式所示。之後,我們創(chuàng)建了使用布林函數(shù)檢查給定數(shù)字是否為素?cái)?shù)的函數(shù)。然後我們編寫主函數(shù),在主函數(shù)中我們接受來自使用者的數(shù)字並呼叫我們已經(jīng)創(chuàng)建的所有函數(shù)並比較兩個(gè)總和。如果總和相等,則列印給定的數(shù)字為史密斯數(shù),如果總和不相等,則列印給定的數(shù)字不是史密斯數(shù)。我們使用下面的螢?zāi)唤貓D來說明上述程式的最終輸出。
範(fàn)例#2
讓我們來看另一個(gè)例子,如下。
代碼:
import java.util.*; public class Smith_Num_2 { static List<Integer> F_P_Fact(int no) { List<Integer> output = new ArrayList<>(); for (int j = 2; no % j == 0; no = no/j) output.add(j); for (int j = 3; j* j <= no; j=j+2) { while (no % j == 0) { output.add(j); no = no/j; } } if (no != 1) output.add(no); return output; } static int S_Digit(int no) { int s= 0; while (no > 0) { s =s+(no % 10); no = no/10; } return s; } public static void main(String args[]) { for (int no = 1; no < 5000; no++) { List<Integer> Fact = F_P_Fact(no); if (Fact.size() > 1) { int s = S_Digit(no); for (int fa : Fact) s =s-S_Digit(fa); if (s == 0) System.out.println(no); } } } }
說明
在上面的範(fàn)例中,我們?cè)囍页?5000 以內(nèi)的所有 smith 編號(hào),如圖所示。我們使用下面的螢?zāi)唤貓D來說明上述程式的最終輸出。
結(jié)論
我們希望您透過這篇文章學(xué)習(xí) Java 中的史密斯數(shù)。從上面的文章中,我們了解了史密斯數(shù)的基本邏輯,也看到了史密斯數(shù)的不同例子。從這篇文章中,我們學(xué)習(xí)瞭如何以及何時(shí)在 java 中使用史密斯數(shù)。
以上是Java 中的史密斯數(shù)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

懶加載在訪問關(guān)聯(lián)時(shí)才查詢,易導(dǎo)致N 1問題,適合不確定是否需要關(guān)聯(lián)數(shù)據(jù)的場(chǎng)景;2.急加載使用with()提前加載關(guān)聯(lián)數(shù)據(jù),避免N 1查詢,適合批量處理場(chǎng)景;3.應(yīng)優(yōu)先使用急加載優(yōu)化性能,可通過LaravelDebugbar等工具檢測(cè)N 1問題,並謹(jǐn)慎使用模型的$with屬性以避免不必要的性能開銷。

Python的內(nèi)存管理基於引用計(jì)數(shù)和垃圾回收機(jī)制,1.引用計(jì)數(shù)機(jī)制確保對(duì)像在引用數(shù)為0時(shí)立即釋放,sys.getrefcount()返回值比實(shí)際引用多1因其自身增加引用;2.循環(huán)引用無法通過引用計(jì)數(shù)清理,需依賴gc模塊的分代回收,調(diào)用gc.collect()可回收不可達(dá)對(duì)象;3.實(shí)際開發(fā)中應(yīng)避免長(zhǎng)期持有大對(duì)象引用,可使用weakref弱引用、及時(shí)置None釋放內(nèi)存,並利用tracemalloc監(jiān)控內(nèi)存分配;4.總結(jié):Python結(jié)合引用計(jì)數(shù)與垃圾回收管理內(nèi)存,開發(fā)者可通過合理使用工具和優(yōu)化引用管

usearestapitobridgephpandmlmodelsbyrunningthemodelinpythonviaflaskorfastapiandcallingitfromphpusingcurlorguzzle.2.runpythonscriptsdirectsdirectlyectlyectlyfromphpsingexec()orshell_exec()orshell_exec()orshell_exec()

Laravel支持使用原生SQL查詢,但應(yīng)優(yōu)先使用參數(shù)綁定以確保安全;1.使用DB::select()執(zhí)行帶參數(shù)綁定的SELECT查詢,防止SQL注入;2.使用DB::update()執(zhí)行UPDATE操作並返回影響行數(shù);3.使用DB::insert()插入數(shù)據(jù);4.使用DB::delete()刪除數(shù)據(jù);5.使用DB::statement()執(zhí)行如CREATE、ALTER等無結(jié)果集的SQL語句;6.推薦在QueryBuilder中使用whereRaw、selectRaw等方法結(jié)合原生表達(dá)式以提升安

響應(yīng)式編程在Java中通過ProjectReactor和SpringWebFlux實(shí)現(xiàn)高並發(fā)、低延遲的非阻塞服務(wù)。 1.ProjectReactor提供Mono和Flux兩個(gè)核心類型,支持聲明式處理異步數(shù)據(jù)流,並通過操作符鏈進(jìn)行轉(zhuǎn)換、過濾等操作;2.SpringWebFlux基於Reactor構(gòu)建,支持註解式和函數(shù)式兩種編程模型,運(yùn)行在Netty等非阻塞服務(wù)器上,可高效處理大量並發(fā)連接;3.使用WebFlux Reactor能提升I/O密集型場(chǎng)景下的並發(fā)能力與資源利用率,天然支持SSE、WebSo

Python的三元運(yùn)算符用於簡(jiǎn)潔地實(shí)現(xiàn)if-else判斷,其語法為“value_if_trueifconditionelsevalue_if_false”;1.可用於簡(jiǎn)單賦值,如根據(jù)數(shù)值正負(fù)返回對(duì)應(yīng)字符串;2.可避免除零錯(cuò)誤,如判斷分母非零再進(jìn)行除法;3.可在字符串格式化中根據(jù)條件選擇內(nèi)容;4.可在列表推導(dǎo)式中為不同元素分配標(biāo)籤;需注意該運(yùn)算符僅適用於二分支情況,不宜多層嵌套,複雜邏輯應(yīng)使用傳統(tǒng)if-elif-else結(jié)構(gòu)以保證可讀性。

MapStruct是一個(gè)編譯時(shí)代碼生成器,用於簡(jiǎn)化JavaBean之間的映射。 1.它通過定義接口自動(dòng)生成實(shí)現(xiàn)類,避免手動(dòng)編寫冗長(zhǎng)的set/get映射代碼;2.具備類型安全、無運(yùn)行時(shí)開銷、支持自動(dòng)映射同名字段、自定義表達(dá)式、嵌套對(duì)象和集合映射等特性;3.可與Spring集成,使用@Mapper(componentModel="spring")將mapper注入為Springbean;4.配置簡(jiǎn)單,只需引入mapstruct依賴和annotationProcessorPaths插

在Notepad 中使用正則表達(dá)式捕獲組可有效重組文本,首先需打開替換對(duì)話框(Ctrl H),選擇“搜索模式”為“正則表達(dá)式”,1.使用()定義捕獲組,如(\w )捕獲單詞;2.在替換框中用\1、\2引用對(duì)應(yīng)組;3.示例:交換姓名“JohnDoe”為“Doe,John”,查找(\w )\s (\w ),替換為\2,\1;4.日期格式轉(zhuǎn)換2023-12-25為25/12/2023,查找(\d{4})-(\d{2})-(\d{2}),替換為\3/\2/\1;5.日誌重排可提取時(shí)間、級(jí)別、ID等信息
