在 Java 中我們有不同類型的功能;史密斯號(hào)碼是提供給用戶的一種功能。基本上,史密斯數(shù)只不過(guò)是一個(gè)合數(shù)(在數(shù)系中以10為底),其所有數(shù)字之和等于其所有質(zhì)因數(shù)(不包括1)所有數(shù)字之和,這就是所謂的史密斯數(shù)數(shù)字。史密斯數(shù)的另一個(gè)名稱是笑話數(shù)。根據(jù)定義,我們可以說(shuō),如果滿足條件,所有素?cái)?shù)都被自然排除。通常,史密斯數(shù)是根據(jù)用戶要求及其問(wèn)題陳述的一些要求在數(shù)學(xué)中使用的數(shù)字系統(tǒng)的一個(gè)非?;镜淖幼侄?。
開(kāi)始您的免費(fèi)軟件開(kāi)發(fā)課程
網(wǎng)絡(luò)開(kāi)發(fā)、編程語(yǔ)言、軟件測(cè)試及其他
史密斯數(shù)背后的邏輯
現(xiàn)在讓我們看看史密斯數(shù)背后的邏輯如下。
史密斯數(shù)的邏輯很簡(jiǎn)單,我們考慮一下下面的數(shù)字,我們就很容易理解如下邏輯了。
示例:假設(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é)果是相同的,或者我們可以說(shuō)是相等的。所以我們可以說(shuō)給定的數(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(xiàn)在讓我們看看查找史密斯編號(hào)的不同步驟,如下所示。
1.首先我們需要初始化或讀取用戶的數(shù)字。
2.之后我們需要找到給定數(shù)字的數(shù)字之和。
3.接下來(lái)我們需要找到給定數(shù)字的素?cái)?shù)因子。
4.現(xiàn)在計(jì)算質(zhì)因數(shù)的數(shù)字和。
5.現(xiàn)在比較給定數(shù)字的數(shù)字之和與質(zhì)因數(shù)的數(shù)字之和。
a.如果兩個(gè)和相等,那么我們可以說(shuō)給定的數(shù)字是史密斯數(shù)。
b.否則,我們可以認(rèn)為給定的數(shù)字不是史密斯數(shù),因?yàn)榭偤筒煌?/p>
所以上述步驟對(duì)于用Java實(shí)現(xiàn)史密斯數(shù)程序很有用。
示例
現(xiàn)在讓我們看看java中史密斯數(shù)的不同示例,以便更好地理解,如下。
示例#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."); } }
說(shuō)明
在上面的程序中,我們嘗試用java實(shí)現(xiàn)史密斯數(shù)程序。在這里,我們首先創(chuàng)建了質(zhì)因數(shù)數(shù)字之和的函數(shù);同樣,我們還創(chuàng)建了函數(shù)來(lái)查找給定數(shù)字的數(shù)字總和,如上面的程序所示。之后,我們創(chuàng)建了使用布爾函數(shù)檢查給定數(shù)字是否為素?cái)?shù)的函數(shù)。然后我們編寫主函數(shù),在主函數(shù)中我們接受來(lái)自用戶的數(shù)字并調(diào)用我們已經(jīng)創(chuàng)建的所有函數(shù)并比較兩個(gè)總和。如果總和相等,則打印給定的數(shù)字為史密斯數(shù),如果總和不相等,則打印給定的數(shù)字不是史密斯數(shù)。我們使用下面的屏幕截圖來(lái)說(shuō)明上述程序的最終輸出。
示例#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); } } } }
說(shuō)明
在上面的示例中,我們嘗試找出 5000 以內(nèi)的所有 smith 編號(hào),如圖所示。我們使用下面的屏幕截圖來(lái)說(shuō)明上述程序的最終輸出。
結(jié)論
我們希望您通過(guò)這篇文章學(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脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

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

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

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

懶加載在訪問(wèn)關(guān)聯(lián)時(shí)才查詢,易導(dǎo)致N 1問(wèn)題,適合不確定是否需要關(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)化性能,可通過(guò)LaravelDebugbar等工具檢測(cè)N 1問(wèn)題,并謹(jǐn)慎使用模型的$with屬性以避免不必要的性能開(kāi)銷。

Python的內(nèi)存管理基于引用計(jì)數(shù)和垃圾回收機(jī)制,1.引用計(jì)數(shù)機(jī)制確保對(duì)象在引用數(shù)為0時(shí)立即釋放,sys.getrefcount()返回值比實(shí)際引用多1因其自身增加引用;2.循環(huán)引用無(wú)法通過(guò)引用計(jì)數(shù)清理,需依賴gc模塊的分代回收,調(diào)用gc.collect()可回收不可達(dá)對(duì)象;3.實(shí)際開(kāi)發(fā)中應(yīng)避免長(zhǎng)期持有大對(duì)象引用,可使用weakref弱引用、及時(shí)置None釋放內(nèi)存,并利用tracemalloc監(jiān)控內(nèi)存分配;4.總結(jié):Python結(jié)合引用計(jì)數(shù)與垃圾回收管理內(nèi)存,開(kāi)發(fā)者可通過(guò)合理使用工具和優(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等無(wú)結(jié)果集的SQL語(yǔ)句;6.推薦在QueryBuilder中使用whereRaw、selectRaw等方法結(jié)合原生表達(dá)式以提升安

響應(yīng)式編程在Java中通過(guò)ProjectReactor和SpringWebFlux實(shí)現(xiàn)高并發(fā)、低延遲的非阻塞服務(wù)。1.ProjectReactor提供Mono和Flux兩個(gè)核心類型,支持聲明式處理異步數(shù)據(jù)流,并通過(guò)操作符鏈進(jìn)行轉(zhuǎn)換、過(guò)濾等操作;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判斷,其語(yǔ)法為“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)算符僅適用于二分支情況,不宜多層嵌套,復(fù)雜邏輯應(yīng)使用傳統(tǒng)if-elif-else結(jié)構(gòu)以保證可讀性。

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

在Notepad 中使用正則表達(dá)式捕獲組可有效重組文本,首先需打開(kāi)替換對(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等信息
