ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2017年11月21日(火) 13:19

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
 記事の件名: 素因数分解
投稿記事Posted: 2008年11月15日(土) 19:55 
与えられた数を素因数分解し、文字列の形で返します。
[hide=関数本体]
コード:
Function soinsuu(num As DWord) As String
	Dim n As DWord
	Dim i As DWord
	Dim count As DWord
	Dim result As String
	n=num
	i=2
	result=""
	While n>1
		count=0
		While n mod i=0
			count++
			n=n/i
		Wend
		If count>0 Then
			If count=1 Then result=result+Str$(i)+"*" Else result=result+Str$(i)+"^"+Str$(count)+"*"
		End If
		i++
	Wend
	If result="" Then
		result=Str$(n)+"*"
	End If
	soinsuu=Left$(result,Len(result)-1)
End Function
[/hide]
[hide=サンプルスクリプト]
コード:
#N88BASIC
Dim num As DWord
*start
Print "素因数分解する数を入力してください。"
Input num
Print soinsuu(num)
Goto *start
Function soinsuu(num As DWord) As String
	Dim n As DWord
	Dim i As DWord
	Dim count As DWord
	Dim result As String
	n=num
	i=2
	result=""
	While n>1
		count=0
		While n mod i=0
			count++
			n=n/i
		Wend
		If count>0 Then
			If count=1 Then result=result+Str$(i)+"*" Else result=result+Str$(i)+"^"+Str$(count)+"*"
		End If
		i++
	Wend
	If result="" Then
		result=Str$(n)+"*"
	End If
	soinsuu=Left$(result,Len(result)-1)
End Function
[/hide]


通報する
ページトップ
   
投稿記事Posted: 2008年12月29日(月) 23:55 
下の問題をやってみました。

http://makotowatana.ld.infoseek.co.jp/p ... tors.shtml

答えが合わない場合があります。

使い方が悪いのですかね。


通報する
ページトップ
   
 記事の件名: DWord型なので
投稿記事Posted: 2009年1月17日(土) 15:33 
Dword型を使っているので、オーバーフローの可能性があります。
スクリプト中のDWordをQWordにしてみてください。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke