![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
それはCGIの領域に入るので質問の意図と違ってくるかと思います。
もう私しか見てないようですし、改めてスクリプトを全て載せた上で質問するとよろしいかと思われます。
No.4
- 回答日時:
その警告を出さないようにスクリプトではbinmode STDOUT, ':utf8'をしています。
デフォルトではASCII領域外(Unicode(UTF-8?)の255より大きい文字コード)の文字に遭遇するとその警告が出ます。(√の文字とか)
詳しくはperldoc perldiagの"Wide charater in %s"の部分やperldoc -f binmodeを参照してください。
この回答への補足
素早い解答ありがとうございます。
コマンドプロンプトでその警告が出る件はわかりました。
(まだ出ますが・・・)
このスクリプトの最下部のprintの上の行にContent-type: text/htmlを出力させ、それをネット上にアップロードして実行しましたが500エラーです。
ネット上で使うにはどうすればいいのでしょうか。
No.3
- 回答日時:
あれ、てっきりこういうことかと思ってました。
----------------------------------
root_of(1):
root_of(2): √2
root_of(3): √3
root_of(4): 2
root_of(5): √5
root_of(6): √6
root_of(7): √7
root_of(8): 2√2
root_of(9): 3
root_of(10): √10
----------------------------------
root_of(1)は何も表示されませんので注意。
root_format(primes_of(12))
は
{
square => 2,
root => 3,
}
を返します。
質問者さんのスクリプトに流用する場合はそちらを使っていただければ。
出力の表示の仕方がそのままでいいならroot_of()でかまいません。
注意点は
- 引数は正の整数
- 効率については思いつくままに書いたのであまり考えていない...
- 数学の知識に乏しいので用語が間違っているかもしれない...
などなど...
----------------------------------
use strict;
use warnings;
use utf8;
# from: 12
# to: (2 => 2, 3 => 1)
sub primes_of {
my ($int) = @_;
my $half = $int / 2;
my $i = 2;
my %primes;
while ($i <= $half) {
if ($int % $i == 0) {
$primes{$i} = exists $primes{$i} ? $primes{$i} + 1 : 1;
$int /= $i;
} else {
$i++;
}
}
if ($int != 1) {
$primes{$int} = exists $primes{$i} ? $primes{$i} + 1 : 1;
}
%primes;
}
# from: (2 => 2, 3 => 1)
# to: {square => 2, root => 3}
sub root_format {
my %primes = @_;
my ($square, $root) = (1, 1);
while (my ($prime, $num) = each %primes) {
while ($num >= 2) {
$square *= $prime;
$num -= 2;
}
$root *= $prime if $num == 1;
}
+{square => $square, root => $root};
}
# from: 12
# to: "2√3"
sub root_of {
my ($int) = @_;
my $formatted = root_format(primes_of($int));
($formatted->{square} == 1 ? '' : $formatted->{square}) .
($formatted->{root} == 1 ? '' : '√'.$formatted->{root});
}
binmode STDERR, ':utf8';
print "root_of($_): @{[ root_of($_) ]}\n" for 1 .. 10;
----------------------------------
この回答への補足
どのように使用するのでしょうか;
コマンドプロンプトでそのまま実行してみたところ、
Wide character in print at C:\root_math.pl line 58.
root_of(1):
Wide character in print at C:\root_math.pl line 58.
root_of(2): √2
Wide character in print at C:\root_math.pl line 58.
root_of(3): √3
Wide character in print at C:\root_math.pl line 58.
root_of(4): 2
Wide character in print at C:\root_math.pl line 58.
root_of(5): √5
Wide character in print at C:\root_math.pl line 58.
root_of(6): √6
Wide character in print at C:\root_math.pl line 58.
root_of(7): √7
Wide character in print at C:\root_math.pl line 58.
root_of(8): 2√2
Wide character in print at C:\root_math.pl line 58.
root_of(9): 3
Wide character in print at C:\root_math.pl line 58.
root_of(10): √10
のように表示されます。
また、print &root_of(12);と追記した場合は
Wide character in print at C:\root_math.pl line 58.
2√3
と表示されます。
浅い知識しかありません;
どうすればいいのでしょうか?
No.2
- 回答日時:
>#1
未検証。
Math::Big::Factorsとか使ったりして楽にかけないかなあ?
http://search.cpan.org/~tels/Math-Big-1.12/lib/M …
Perlに苦手意識持ってて実行環境整備してないのでメモのみ。
No.1
- 回答日時:
めんどくせ~.
整数に限定していいなら
sub introot {
my ($n) = @_;
for ($i = int(sqrt($n)); $i > 1; --$i) {
return "$i√${[$n/($i*$i)]}" if $n % ($i*$i) == 0;
}
"√$n";
}
でいいかも. ま, 人間がやってることを素直に Perl に直しただけなんだが.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 分数をエクセルに入れる計算式について 4 2022/05/13 09:14
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- Excel(エクセル) 電卓は正しいのに エクセルで計算させると間違った答えです。なぜ? 7 2022/08/11 07:04
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Excel(エクセル) エクセルの関数に関しての質問です。 5 2022/10/07 11:17
- 数学 複利毎月積み立てで年利からの計算方法 3 2023/01/11 15:56
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- その他(コンピューター・テクノロジー) 正規表現の置換で数値を合計したいです。 2 2022/10/17 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで時間の計算
-
掲示板はPerlだけで作れますか?
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
Perlのプログラムについて
-
INDIRECT 横に再度抽出したい
-
perlで文字の置換又は抽出に関...
-
このファイルを開く方法で困っ...
-
ファイルをディレクトリ分配の...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー
-
XML::XPathで日本語検索するには
-
perlスクリプト s/^\\s+//; ...
-
PerlでIPアドレスを取得する方法
-
perl+shiftjisで5c文字化けの対...
-
実行時パラメータを使用するとE...
-
「CGIプログラムエラー」って何...
-
フォームから送られてきた文字...
-
正規表現でのエラー
-
何時間後を求める。
-
UTF8でperlスクリプトを書くと...
-
ActivePerl 1行入力で 'と"が...
-
メールフォームから大きめの添...
-
windowsXP上で動作する最新版の...
-
Perl 教えてください。
-
perlでactive directoryに登録
-
ローカルテストOKのPerl サー...
-
$com::VDの意味がわかりません
-
syntax OKなのに・・・
-
textareでの改行
おすすめ情報