Ⅰ c語言怎麼求素數
除2以外,素數皆為奇數,所以對2單獨處理,從3開始,將100以內的奇數逐一進行素數考察,是則輸出,不是則跳過。另設一計數變數控制換行,每輸出5個素數添加一個回車。代碼如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int i,n,t;
pr
#include
#include
main()
{
int a,i,flag,count=0;
for(a=1;a <=100;a++)
{
flag=0;
for(i=2;i
#include int main()
{
int i,n,k,b;
for(i=1,b=1;i<=100;i++)
{
for(n=2;n {
k=i%n;
if(k==0)
break;
}
(1)c語言求質素擴展閱讀:
C語言注意事項:
1、預編譯命令不是語言語句,不使用分號,不佔用運行時間。
2、在IDE中通常包括編輯器,編譯器,匯編器和鏈接器,在這個過程中是語言等級逐級降低的過程,從最高級的c語言到中級語言匯編語言再到低級語言機器語言,編輯器生成文橋如察件為.c文件,編譯器生成的文件為obj匯編器生成的文件橡租為.0文件,鏈接器生成的是exe文件。
3、注意 return和exit的區別, return是讓本函數運行結束,而exit是讓本程序運行結束。
4、在指針定義時,一定要進行初始化,否則就會出現意想不到的錯誤,如果不能找到對應地址賦值,那就賦給NULL(注意大寫)。
5、gets可以 scanf辦成辦不成的事,就是可以接受空格,puts在最後會輸出一個換敏茄行。
Ⅱ C語言編程、求100以內所有質素數
樓主大括弧都未能匹配,{有兩個,}有三個,編譯就通過不了的。
剛寫了份代碼,已調試通過,供樓主參考:
#include
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語言問題,關於質素的推導,求大大解釋!
num%i 這個操作 叫模除 或陸雹者叫取余。
是求num除以i的余數搭悉前的。
於是 num%i==0 這個就是整除了。
於是 for循環 就是求知清因子的個數。
如果 除了1和本身外,因子個數為0,那麼 就是素數了。
Ⅳ 求"求素數的C語言程序"
#include <stdio.h>
int main()
{
int a=0;
int num=0;
int i;
printf("輸入一個整數:");
scanf("%d",&num);
for(i=2;i<num;i++){
if(num%i==0){
a++;
}
}
if(a==0){
printf("%d是素數。 ", num);
}else{
printf("%d不是素數。 ", num);
}
return 0;
}
(4)c語言求質素擴展閱讀:
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。
基本演算法:若 k%m==0 則說明 k 不是素數。
判斷整數n是否為素數——採用枚舉法求解。
採用枚舉演算法解題的基本思路:
(1)確定枚舉對象、枚舉范圍和判定條件;
(2)枚舉可能的解,驗證是否是問題的解。
枚舉演算法的一般結構:while循環。
參考資料來源:網路-枚舉法
Ⅳ 用C語言編寫求質數的程序
//我分別寫出了求素數和判斷素數的程序
/*
//判斷一個數是否為素數
#include<stdio.h>
#include<math.h>
int
isprime(int);
void
main()
{
int
inumber;
printf("請輸入一個非負整數:
");
scanf("%d",&inumber);
if(isprime(inumber))
printf("%d是素數!\
",inumber);
else
printf("%d不是素數!\
",inumber);
}
int
isprime(int
a)
{
int
i;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
return
0;
return
1;
}
*/
/*****************************************************/
//求某個正整數以內的素數
#include"stdio.h"
#include"math.h"
int
main(void)
{
int
count,i,m,n,num;
printf("請輸入所求范圍(正整數):
");
scanf("%d",&num);
count=0;//count記錄素數的個數
printf("%d以內的素數為:\
",num);
for(m=2;m<=num;m++)
{
n=sqrt(m);
for(i=2;i<=n;i++)
{
if(m%i==0)
break;
}
if(i>n)//如果m是素數
{
printf("%6d",m);
count++;
if(count%10==0)//count為10的倍數時換行
printf("\
");
}
}
printf("\
");
return
0;
}
Ⅵ C語言計算質數
#include<stdio.h>
staticcharm[8000000];
staticintprime[500000];
#defineMAX_N7368787
voidset(void)
{
inti,j;
for(i=2;i<=MAX_N;i++)
{
if(m[i]==1)continue;
for(j=i+i;j<=MAX_N;j+=i)
m[j]=1;
}
for(i=j=0;i<=MAX_N;i++)
if(m[i]==0)prime[j++]=i;
}
intmain()
{
intm,n,;
while(~scanf("%d%d",&m,&n))
{
for(i=m;i<=n;i++)
{
printf("%d",prime[i-1]);
if(i==n||(i-m)%10==9)putchar(' ');
elseputchar('');
}
}
return0;
}
Ⅶ 計算1到1000所有素數(質素)的和 C語言 求解題思路 最好有代碼 仔細研究下
int i,j;
for(i=1;i<=1000;i++)
{
for(j=2;j<i/2;j++)
{
if(i%j==0)
break;
}
if(j>=i/2)
printf("%d ",i);
}
素數就是只能被1和兄型畢它本身整除。如果1到該素數租搏的一羨芹半都沒有被整除的,以後就沒有能被整除的數了。
Ⅷ c語言求素數的演算法
根據素數的性質,代碼設計如下:
設計一:判斷n是否能被1~n-1整除,不能整除為素數
#include<stdio.h>
int main()
{
int i, n;
scanf("%d", &n);
for (i = 2; i < n ; i++)
{
if (n%i == 0)
break;
}
if (i < n) printf("This is not a prime.");
else printf("This is a prime.");
return 0;
}
設計二:判斷n是否能被2~√n間的整數整除,不能整除為素數
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
double k;
scanf("%d", &n);
k = sqrt(n);
for (i = 2; i <= k;i++)
{
if (n%i == 0) break;
}
if (i <=k) printf("This is not a prime.");
else printf("This is a prime");
return 0;
}
(8)c語言求質素擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法
Ⅸ 求質數c語言
#include "stdafx.h"
int main(int argc, char* argv[])
{
int a=0;
int b=2;
int i=0;
int n1=0;
int n2=0;
printf("請輸入所耐啟螞昌埋要求哪個范圍的質數 ");
scanf("%d %d",&n1,&n2);
for(a=n1;a<=n2;a++)
{
for(b=2;b<=a-1;b++)
if(a%b==0) break;
if(a<=b)
printf("質數: %d ",a);
}
printf(" ");
return 0;
}
3
輸入你所要求某個范圍的質數,兩個數用【空格鍵】隔開。如輸入"180 200",
輸出:
質數: 181
質數: 191
質旁頃數: 193
質數: 197
質數: 199
Ⅹ C語言中如何求質數
#include<stdio.h>宏虧頃
int isprime(int n)
{ for(int i=2; i*i<=n; i++)
if(n%i==0)return 0;
return n>蔽陸1;
}
int main()
{ int i,n;
scanf("%d",&n);
for(i=2; i<n; i++)
if(isprime(i))
printf("%5d"空大,i);
return 0;
}