C++で1からnまでの素因数分解を表示するコードを書いています。
(今目指しているのは
1=1
2=2
3=3
4=22
5=5
6=23
のように表記としては綺麗ではありません)
しかし実行すると
1=1
2=2
2=2
2=2
・
・
・
のように2でループしてしまいます。
c++は始めたばかりでコードもかなり汚いと思われますが、どの部分がよろしくないのかご教授いただけると幸いです。
該当のソースコード
c++
#include <stdio.h>
#include <math.h>
int main(){
int n,flag,d1,k1;
printf("nを入力してください\nn=");
scanf("%d",&n);
printf("1=1\n");
for(int d=2;d<=n;d++){
printf("%d=",d);
for(int k=2;k<=d;k++){//ここから
k1=sqrt(k);
flag=1;
for(int m=2;m<=k1;m++){
if(k%m==0){
flag=0;
}
}
if(flag==0){
continue;
}//ここまで素数kの書き出し(小さい順)
for(int z=1;z>0;z++){//ここから
if(d%k==0){
printf("%d",k);
d=d/k;
}
else{
break;
}
}//ここまで素数kでdを割っていって割ったkを表示
}
printf("\n");
}
return 0;
}
初めのincludeはなぜか大きくなってしまったため(システムを理解しておりません)
\をつけました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。