c語言100以內的質數
⑴ c語言編程,1到100,求質數,誰能幫幫我啊,網上找的,不完整,看不懂,毫無思路
#include<stdio.h>
#include<math.h>
intf(intn)
{
inti;
//素數標准:只能被自己和1整除的數字
for(i=2;i<=sqrt(n);i++)
{
//能被其他數整除,就不是素數
if(n%i==0)
return0;
}
return1;
}
intmain()
{
inti,k=0;
printf("1至100之間的素數從小到大分別為: ");
for(i=2;i<=100;i++)
{
//依次判斷所有數字是否為素數
if(f(i))
{
k++;
printf("%d ",i);
}
}
printf(" 總共%d個。 ",k);
return0;
}
⑵ 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>
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到其本身前面的那一個數字,如果此過程中出現整除的現象,則該數不是素數。如果沒有整除的現象,則該數為素數輸出。
(3)c語言100以內的質數擴展閱讀:
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能整除其他自然數的數叫做質數;否則稱為合數。
質數的個數是無窮的。歐幾里得的《幾何原本》中有一個經典的證明。它使用了證明常用的方法:反證法。具體證明如下:假設質數只有有限的n個,從小到大依次排列為p1,p2,……,pn,設N=p1×p2×……×pn,那麼,要大於p1,p2,……,pn,所以它不在那些假設的素數集合中。
⑷ 求1到100中所有的質數的C語言程序
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
大哥大姐幫忙呀!
解析:
#include <stdio.h>
#include <math.h>
bool IsPrime(int n);
void main(void)
{
for (int i = 2; i <= 100; i ++)
{
if (IsPrime(i))
{
printf("%d是質數\r\n", i);
}
}
}
bool IsPrime(int n)
{
int nRoot = int(sqrtf(n));
for (int i = 2; i < nRoot; i ++)
{
if (n % i == 0)
return false;
}
return true;
}
⑸ 用C語言輸出100之間的所有質數
1、首先新建一個空白的c語言文件,引入頭文件,頭文件中包括math庫,稍後會用到,建立主函數: