1 #include<stdio.h>
2 int main(){
3 int ans,judge,loop;
4 printf("値を分析します\n好きな数字を入力してください。\n");
5 scanf("%d",&ans);
6 ans%2=judge;
7 if(judge=0){
8 printf("偶数です\n");
9 }else{
10 printf("奇数です\n");
11 }
12 for(loop=1;loop<ans;loop++){
13 ans%loop=judge;
14 if(judge=0){
15 printf("素数ではありません。\n");
16 ans=loop;
17 return 0;
18 }
19 }
20 printf("素数です。\n");
21 return 0;
22 }
~
たすけてください
Re: たすけてください
コンパイラに通せばすぐにわかりそうですが……。
手元にコンパイラがなくても,標準的な範囲でコードを試す (実行可能) ことがネット上でできたりします。
ideoneでの実行例
手元にコンパイラがなくても,標準的な範囲でコードを試す (実行可能) ことがネット上でできたりします。
ideoneでの実行例
prog.c: In function ‘main’:
prog.c:6:6: error: lvalue required as left operand of assignment
ans%2=judge;
^
prog.c:7:1: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if(judge=0){
^~
prog.c:13:9: error: lvalue required as left operand of assignment
ans%loop=judge;
^
prog.c:14:1: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if(judge=0){
^~
- 6行目,13行目 (エラー)
代入は「右辺」を「左辺」に代入します。これらの行では,ans%2やand%loopにjudgeを代入しようとしているのでコンパイルエラーになります。 - 7行目,14行目 (警告)
警告内容とは異なりますが,Cにおける等値比較は「==」を使います。「=」ではありません。 - 12行目 (コンパイラはエラーを出していませんが,ロジック上の誤り:いわゆるバグ)
素数は「1」と「自身」以外の数で割りきれない自然数を言います。ループの開始を1にすると,必ず割り切れるため,素数ではないと判定されます。