本文目錄一覽:
- 1、c語言求100以內的質數
- 2、C語言求100以內質數
- 3、c語言使用循環找出100之內的所有質數
- 4、C語言,編寫函數判斷一個整數是否為素數,在主函數中調用該函數並輸出100以內的全部素數?
- 5、用C語言.判斷100以內的質數用IF語句
- 6、輸出100以內的質數,用c語言編寫
c語言求100以內的質數
以我來看我覺得兩個for循環都有問題。
首先第一個for循環應該錯了。應該是i 100。因為是求100以內的,所以要循環到100。
這個程序就是利用for循環讓i從2遍歷到99.然後利用j找出了1和本身之外i的因數。
那麼第二個for循環問題就來了,我們尋找i的因數的時候,並不需要從2一直找到i本身,只要找到i的一半就可以停止了。舉個簡單例子,比如我們要找98的因數,那麼我們只需要找到98÷2 = 49就行了,因為49之後的數字是肯定不能整除98的。同理大於i/2之後的數字是肯定不能夠整除i的。所以第二個for的條件應該是j = (i/2)而不是j。下面就簡單了。如果j是i的因數,那麼i%j=0. 就直接continue(順便提一句這裡是不能用break的,因為break是直接跳出了for循環,相當於直接結束了整個for循環,而此時還沒有遍歷到100的,應該用continue,continue就是結束當前循環並且執行i++繼續下一輪循環)繼續循環而不用執行print語句(這個時候代表i不是質數,因為除了1和它本身還有j這個因數。)。同理,如果從2到i/2都沒有i的因數,那麼就說明i沒有其他因數,也就是質數了,所以print輸出i。
另外補充一下:
i/j是求i除以j的商,比如11 / 3 = 3; 6 / 3 = 2
i%j是求i除以j的余,比如11 % 3 = 2; 6 % 3 = 0。
C語言求100以內質數
以我來看我覺得兩個for循環都有問題。
首先第一個for循環應該錯了。應該是i 100。因為是求100以內的,所以要循環到100。
這個程序就是利用for循環讓i從2遍歷到99.然後利用j找出了1和本身之外i的因數。
那麼第二個for循環問題就來了,我們尋找i的因數的時候,並不需要從2一直找到i本身,只要找到i的一半就可以停止了。舉個簡單例子,比如我們要找98的因數,那麼我們只需要找到98÷2 = 49就行了,因為49之後的數字是肯定不能整除98的。同理大於i/2之後的數字是肯定不能夠整除i的。所以第二個for的條件應該是j = (i/2)而不是j。下面就簡單了。如果j是i的因數,那麼i%j=0. 就直接continue(順便提一句這裡是不能用break的,因為break是直接跳出了for循環,相當於直接結束了整個for循環,而此時還沒有遍歷到100的,應該用continue,continue就是結束當前循環並且執行i++繼續下一輪循環)繼續循環而不用執行print語句(這個時候代表i不是質數,因為除了1和它本身還有j這個因數。)。同理,如果從2到i/2都沒有i的因數,那麼就說明i沒有其他因數,也就是質數了,所以print輸出i。
另外補充一下:
i/j是求i除以j的商,比如11 / 3 = 3; 6 / 3 = 2
i%j是求i除以j的余,比如11 % 3 = 2; 6 % 3 = 0。
c語言使用循環找出100之內的所有質數
#include “stdio.h”
#define N 100
int main()
{
int i,j;
int flag;
printf(“100 以內的質數有:\n”);
for(i=2;i101;i++)
{
flag = 1;
for(j=2;j=i/2;j++)
if(i%j==0)
{
flag = 0;
break;
}
if(flag)
printf(“%d “,i);
}
printf(“\n列印完畢\n”);
return 0;
}
C語言,編寫函數判斷一個整數是否為素數,在主函數中調用該函數並輸出100以內的全部素數?
#include stdio.h
int is_prime_number(int n)
{
int i;
int result = 1;
if(n==1)
return 0;
for(i=2;in;i++)
{
if(n%i==0)
{
result = 0;
break;
}
}
return result;
}
int main()
{
int n;
printf(“100以內的素數包括:\n”);
for(n=1;n=100;n++)
{
if(is_prime_number(n))
{
printf(“%d “,n);
}
}
printf(“\n”);
return 0;
}
用C語言.判斷100以內的質數用IF語句
我對孫經琛同志的程序做了修改:
#include stdio.h
void main()
{
int i,k,t=0,sum=0;
int c,a[100];
c=1;
for (i=1;i=100;i++) /*設定範圍100以內*/
{
for(k=1;k=i;k++) /*從1查到當前所判斷的數*/
{
if (i%k==0 k!=1 i!=k) c=0; /*如果已經不滿足素數條件,則將標誌轉0*/
}
if (c!=0) {a[t]=i;t++;} /*如果標誌為1,則該質數保存入數組*/
c=1; /*初始化標誌*/
}
for(i=0;it;i++)
printf(“%d\n”,a[i]);
getchar();
}
輸出100以內的質數,用c語言編寫
#includestdio.h
int main()
{
int i,j;
int count=0;
for(i=2;i100;i++)
{
for(j=2;j=i/2;j++)
if(i%j==0)//如果i能被j整除 就不是質數 退出循環
break;
if(ji/2)
{
count++;
printf(“%-3d”,i);
if(count%5==0)//當每一行有5個數時 換行
printf(“\n”);
}
}
return 0;
}
for(j=2;j=i/2;j++)中的 j=i/2是表示 從j=2開始遍歷到j=i/2 看看2~i/2中能否整除i
如果都不能 說明i是質數(也就是ji/2)
如果有1個及以上能整除i 說明i不是質數
for()
{
}
//for循環結束之後 j的值是大於i/2的 因為for循環的條件是:j=i/2
//因此 當ji/2時 for循環結束
if(ji/2)
這裡當且僅當2~i/2都不能整除i時 也就是ji/2 才說明i是質數
參考資料
輸出100以內的質數,用c語言如何編寫?.百度知道[引用時間2017-12-25]
原創文章,作者:EKLB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140848.html