『壹』 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以內的質數有多少個
k = sqrt(x);
for (i = 2; i <= k;i++) {
if( x % i == 0) break;
}
if (i <= k) printf{"不是質數"},否則反之,中心思想理解了就好
『叄』 找出50-100之間的質數,並統計質數的個數。用c語言編程回答
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,k;
int n=0;
for(i=50;i<=100;i++)
{
k=sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0)
break;
if(j>=k+1)
{
printf("%d ",i);
n=n+1;
}
if(n%5==0)
{
printf("\n");
}
}
print("個數為%d",n) printf("\n");
}
『肆』 用C語言輸出100之間的所有質數
1、首先新建一個空白的c語言文件,引入頭文件,頭文件中包括math庫,稍後會用到,建立主函數:
『伍』 C語言編程、求100以內所有質素數
樓主大括弧都未能匹配,{有兩個,}有三個,編譯就通過不了的。
剛寫了份代碼,已調試通過,供樓主參考:
#include
<stdio.h>
main(void)
{
int
i,t;
for(i=1;
i<=100;
i++)
{
if(i
==
1)
continue;
if(i
==
2)
{
printf("%d,",i);
continue;
}
for(t=2;
t
<=
i/2;
t++)
{
if((i%t)
==
0)
break;
}
if(t
>
i/2)
{
printf("%d,",i);
}
}
printf("\n");
return
0;
}
輸出的結果為:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,
再說說樓主代碼中一些錯誤:
1.之前提到編譯上就不能通過。{和}個數未能匹配。
2.
if(100%i!=0)
break;
該語句的含義是100除以i的余數不等於0則跳出循環,當為1時,就已經跳出循環了。而且這對於質素的判斷是毫無意義的,可以刪除。
3.
for(t=1;t<=i;t++)
質數的判斷的話,t應該是從2開始計數的,否則i%1肯定是等於0的。應修改為for(t=2;
t<=i;
t++)。此外,這里可以參考我的代碼,t<=i/2即可,用以提高提升效率。
希望對樓主有所幫助。謝謝。
『陸』 C語言求100內質數
break只能跳出最內層循環4%2=o那不是跳出了for(j=2;j<i;j++),但沒有跳過printf("%d
",i);所以還是輸出了
解決方法有二:
1、改用goto(危險)
#include<stdio.h>
intmain()//嗯,經過我手修改的代碼都要加上int
{
inti,j;
for(i=2;i<=100;i++)
{
for(j=2;j<i;j++)
if(i%j==0)gotoskip;//直接跳到skip標簽,跳過printf
printf("%d ",i);
skip:
}
return0;
}
2、設置標識符
#include<stdio.h>
intmain()
{
inti,j;
intflag;//增加一個標識符變數
for(i=2;i<=100;i++)
{
flag=0;//重置標識符
for(j=2;j<i;j++)
if(i%j==0){
flag=1;//設置標識符,表示發現這個數是合數
break;
}
if(flag==0)printf("%d ",i);//標識符保持0表示剛才循環中沒有發現這個數是合數
}
return0;
}
『柒』 輸出50到100所有質數的c語言編程
#include<stdio.h>
boolis_prime(intn)
{
if(n<2)
returnfalse;
for(inti=2;i*i<=n;i++)
{
if(n%i==0)
returnfalse;
}
returntrue;
}
intmain()
{
for(inti=50;i<=100;i++)
{
//如果是質數,則列印
if(is_prime(i))
{
printf("%d",i);
}
}
return0;
}
『捌』 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和它本身外,不能被其他自然數整除。
『玖』 C語言編程 找出50到100的質數 並統計質數個數
/* Function to find <strong class="highlight">prime</strong> <strong class="highlight">number</strong> if so return 1 else return 0 */
#include<stdio.h>
#include<math.h>
int isprime( int num )
{
int i ;
int sq = ( int )sqrt( num );
/* here check should be done for num = 0 and 1 other wise 0 and 1 are printed as primes */
/* if ( num <= 1) return 0; */
for ( i = 2 ; i <= sq ; i++ )
{
if ( num % i == 0 )
{
break ;
}
}
if ( i <= sq )
return 0;
else
return 1 ;
}
int main(void)
{
int pnPrimeList[100]={0};
int ntotal = 0;
for(int i=50;i<=100;i++)
{
if(1==isprime(i))
{
pnPrimeList[ntotal]=i;
ntotal++;
}
}
for(int j=0;j<ntotal;j++)
{
printf("%d ", pnPrimeList[j]);
}
printf("\ntotal number = %d\n",ntotal);
return 0;
}
『拾』 c語言 求50內的素數
if(i>n)
是針對for(i=2;i<=n;i++)
i<=n條件結束判斷的
如果m不是素數,那麼將執行
if(m%i==0)
break;
這樣,i還沒到n就結束循環了。
如果m是素數,i一直到n+1才跳出循環,所以只有i>n情況下,才能正確判斷是否為素數