A. c語言求100以內素數的問題
#include<stdio.h>
int main()
{
int i=0;
int count=0;
for(i=0;i<=100;i++)
{
int j=0;
for(j=2;j<=i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
count++;
printf("%d ",i);
}
}
printf(" count=%d ",count);
return 0;
}
解題思路:
素數,就是除了1和他本身,不能被其他數整除的數字。答案就是用100到200之間的每個數字,除以2到其本身前面的那一個數字,如果此過程中出現整除的現象,則該數不是素數。如果沒有整除的現象,則該數為素數輸出。
(1)用c語言求一百以內的質數擴展閱讀:
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能整除其他自然數的數叫做質數;否則稱為合數。
質數的個數是無窮的。歐幾里得的《幾何原本》中有一個經典的證明。它使用了證明常用的方法:反證法。具體證明如下:假設質數只有有限的n個,從小到大依次排列為p1,p2,……,pn,設N=p1×p2×……×pn,那麼,要大於p1,p2,……,pn,所以它不在那些假設的素數集合中。
B. 用C語言求100以內的質數
這個問題是C語言中比較常見的一種題目,做法有很多中,我這里提供一種最基礎的演算法,代碼如下:
C. 用C語言輸出100之間的所有質數
1、首先新建一個空白的c語言文件,引入頭文件,頭文件中包括math庫,稍後會用到,建立主函數:
D. 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。
E. c語言求100以內的素數
#include<stdio.h>
//輸出100之內的所有素數
int main()
{
int i;
int j;
int flag = 1;
for(i = 2;i <= 100;i++)
{
for(j = 2;j <= i / 2;j++)
{
if(i % j ==0)
{
flag = 0;
break;
}
}
if(flag == 1)
{
printf("%d ",i);
}
flag = 1;
}
return 0;
}
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言;
質數(prime number)又稱素數,有無限個。一個大於1的自然數,除了1和它本身外,不能被其他自然數整除。
F. 輸出100以內的質數,用c語言編寫
#include <stdio.h>
int main(int argc, char **argv)
{
int x;
for (x=1;x<100;x++){
int i;
int isprime=1;//表示x是素數。
for(i=2;i<x;i++){
if (x%i==0){
isprime=0;
break;
}
}
if (isprime==1){
printf("%d",x);
}
}
return 0;
}
C語言編程計算注意事項:
1、編程時注意符號大小寫。
2、main函數要有返回值
3、C語言中定義數組,要定義出大小,數組的大小隻能是常量不能是變數。
4、%md ; %0md ;%.mf;(以m位進行右對齊輸出,不足m位空格補上;以m位進行右對齊輸出。不足m位用0補上;保留m位小數)