c語言200以內的素數
⑴ c語言設計,求200以內所有素數。
不應該把判斷直接寫在循環體內,這樣值判斷一次就輸出了,m=sqrt(i);{。。那個「{」應該寫在這句話前面。我改了一下。這個程序會把所有的數輸出並判斷,如果不要輸出非素數,就把那句輸出語句刪了就行了。
#include
#include
void
main()
{
int
i,m,n;
for(i=1;i<=100;i++)
{m=sqrt(i);
for(n=2;n<=m;n++)
{if(i%n==0)
{printf("%d不是素數\n",i);
break;
}
}
if(n>m)
printf("%d是素數\n",i);
}
getch();
}
⑵ 求c語言編程輸出200以內的素數
#include<stdio.h>
#include<math.h>
int prime(int n)
{int i;
for(i=2;i<=sqrt(n+1);i++)
if(n%i==0)return 0;
return n>1;
}
int main()
{int i;
for(i=2;i<=200;i++)
if(prime(i))printf("%4d",i);
return 0;
}
⑶ C語言 200以內素數
程序是這樣的,我運行了是真確的不知道是不是最簡單的。
#include <stdio.h>
#include <math.h>
void main()
{int i,j,flag,count=0;
clrscr();
for(i=2;i<=200;i++)
{flag=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
{flag=0;
break;}
if(flag==1)
{printf("%5d",i);
count++;
if(count%10==0)printf("\n");}}}(count%10==0意思為每行十個數夠十個換行)
⑷ c語言 調用函數,輸出100到200之間的所有素數
素數是只有1和自身才能整除的數。調用自定義的函數prime,對100~200間的奇數進行判斷,是素數則輸出。舉例代碼如下:
#include"stdio.h"
intprime(intn){//判斷100~200間的數是否為素數
inti;
if(!(n&1))
return0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return0;
return1;
}
intmain(intargc,char*argv[]){
intn;
for(n=101;n<200;n+=2)
if(prime(n))//調用prime判斷n是否為素數
printf("%4d",n);//是則輸出n
printf(" ");
return0;
}
⑸ c語言輸出100到200之間的素數
解題思路:
首先先找出來100~200以內的所有整數,再讓這些整數對除了1和它本身以外的數求余,如果有能整除的就不是素數,否則就為素數。
先找出來100到200的所有整數,都為i
用i去對除了1和它本身以外的數求余。
正確的代碼:
#include<stdio.h>
int main()
{
int conut = 0;
int i = 0;
for(i=100; i<=200; i++)
{
int j = 0;
for(j=2; j<i; j++)
{
if(i%j == 0)
break;
}
if(j==i)
{
conut++;
printf("%d ", i);
}
}
printf(" ");
printf("素數個數為:%d ", conut);
return 0;
}
第二個if語句的判斷條件應該是j==i;而不是i%j 。
(5)c語言200以內的素數擴展閱讀:
實現的其他方法:
需要用到sort函數,也就是開平方根函數。頭文件為#include<math.h>。 顯而易見,任何一個數,每一對因子都是由這個數開平方後的數的左右各一個組成,所以,在求余過程中,只需要對從2到開平方之後的數求余即可。遇到可以整除的就不是素數,否則就為素數。
代碼:
#include<stdio.h>
#include<math.h>
int main()
{
int count = 0;
int i = 0;
for(i=100; i<=200; i++)
{
int j = 0;
for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
break;
}
if(j > sqrt(i))
{
count++;
printf("%d ",i);
}
}
printf(" ");
printf("素數個數為:%d", count);
return 0;
}
⑹ 用C語言編一程序,輸出200~300之間的全部素數,求解啊
#include<iostream>
usingnamespacestd;
intHaveFun()
{
intSum=0;
for(intvar=200;var<=300;var++){
boolisPrime=1;
for(intfac=2;fac*fac<=var;fac++)
if(!(var%fac))isPrime=0;
if(isPrime)Sum+=var;
}
returnSum;
}
intmain()
{
cout<<HaveFun()<<endl;
return0;
}
方法二、
(6)c語言200以內的素數擴展閱讀:
return 0用法:
return 0代表程序正常退出。return是C++預定義的語句,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值。
return語句用來結束循環,或返回一個函數的值。
1、return 0,說明程序正常退出,返回到主程序繼續往下執行。
2、return 1,說明程序異常退出,返回主調函數來處理,繼續往下執行。return 0或return 1對程序執行的順序沒有影響,只是大家習慣於使用return(0)退出子程序而已。
⑺ 怎麼用C語言求200內所有素數
判斷條件if(a%i==0)是對的,但顯示的地方就不對了,你要加個判斷,如果不是break出來的,那就是素數。 還有循環不必一致到a-1,其實到它的一半就夠了。按照這個來修改一下如下:
int a = 3, i ;
while( a <= 200 )
{
for( i=2 ; i<=a/2; i++ )
{
if( a % i == 0 )
break ; // 跳出的不是素數
}
if( i > a/2 ) // 直到循環結束也沒有找到因子的是素數
printf( "%4d", a ) ;
a ++ ;
}
⑻ C語言 輸出200以內的素數,,怎麼做,跪求,下面是我自己寫的。。
#include<stdio.h>
void main()
{
int num,i;
for(num=0;num<=200;num++)
{
if(num==0||num==1)
continue;
else
{
for(i=2;i<num;i++)
{
if(num%i==0)
break;
}/*這里*/
if(i==num)/*這里*/
printf("%5d\n",num);
}
}
}
⑼ c語言求200以內的素數
第一層for循環i=2-200,第二層j小於i並且>1,然後判斷I%j是否==0,如果是等於0的,則不是素數,之後可以考慮減少判斷次數優化演算法。
⑽ C語言輸出100-200之間的素數
邏輯錯誤,准確位置為14行,正確代碼如下:
#include<stdio.h>
int main()
{
int i = 0;
for (i=100; i<=200; i++)
{
int j = 0;
for (j=2; j<=i-1; j++)
{
if (i%j == 0)
{
break;
}
}
if (j>=i)
{
printf("%d",i);
}
}
return 0;
}
(10)c語言200以內的素數擴展閱讀:
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。
質數的個數是無窮的。歐幾里得的《幾何原本》中有一個經典的證明。它使用了證明常用的方法:反證法。具體證明如下:假設質數只有有限的n個,從小到大依次排列為p1,p2,……,pn,設N=p1×p2×……×pn,那麼,
要大於p1,p2,……,pn,所以它不在那些假設的素數集合中。
如果 為合數,因為任何一個合數都可以分解為幾個素數的積;而N和N+1的最大公約數是1,所以不可能被p1,p2,……,pn整除,所以該合數分解得到的素因數肯定不在假設的素數集合中。因此無論該數是素數還是合數,都意味著在假設的有限個素數之外還存在著其他素數。所以原先的假設不成立。也就是說,素數有無窮多個。
其他數學家給出了一些不同的證明。歐拉利用黎曼函數證明了全部素數的倒數之和是發散的,恩斯特·庫默的證明更為簡潔,哈里·弗斯滕伯格則用拓撲學加以證明。