c語言找出素數
① c語言 輸出1到100之間的全部素數
有三種方法:
1、輸出1-100以內的素數:
(1)c語言找出素數擴展閱讀:
在這個小程序中主要用到的是for循環
for 循環語句的一般形式為:
for (表達式1; 表達式2; 表達式3)
{
語句;
}
需要注意的兩點:
1) 表達式1、表達式2和表達式3之間是用分號;隔開的,千萬不要寫成逗號。
2)for(表達式1;表達式2;表達式3)的後面千萬不要加分號,很多新手都會犯這種錯誤——會情不自禁地在後面加分號。
因為 for 循環只能控制到其後的一條語句,而在C語言中分號也是一個語句——空語句。所以如果在後面加個分號,那麼 for 循環就只能控制到這個分號,下面大括弧裡面的語句就不屬於 for 循環了。
② C語言如何求素數
若x不是素數,
則
x=a*b,
我們可以要求
a<=b,
於是
a*a
<=
a*b,
也就是
a*a
<=
x
所以
a
<=
根號x.
如果在
for(a=2;
a*a<=x;
a++)
之內都找不到可以整除x的a
(也就是滿足
x%a==0
的a)
x就必定是素數了.
如果在
for(a=2;
a<=x;
a++)
之內找當然也可以,
只是浪費時間而已.
③ C語言求素數
/*求素數的三種方法
一:for(i=2;i<=(n-1);i++)
if(n%i==0)i在2到n-1之間任取一個數,如果n能被整除則不是素數,否則就是素數
二:for(i=2;i<n/2;i++)
if(n%i==0) /*i在2到n/2之間任取一個數,如果n能被整除則不是素數,否則就是素數
三:for(i=2;i<(n=sqrt(n));i++)
if(n%i==0) /*i在2到sqrt(n)之間任取一個數,如果n能被整除則不是素數,否則就是素數,在下省了下面的輸出步驟*/
/*在本程序中使用第三種方法來求解*/
#include <stdio.h>
#include <math.h>
int main(void)
{
int i; /*外循環*/
int j; /*內循環*/
int flag; /*素數標志,flag為1則此數為素數*/
flag = 0;
//int n;
i = 2;
while( i <= 100)
{
j = 2;
flag = 1; /*假設此數為素數*/
while(j <= (int) sqrt(float(i)))
{
if(0 == (i %j))
flag = 0; /*根據第三種演算法可知次數不為素數*/
j ++;
}
if(flag)
printf("%d\t",i);
i++;
}
printf("\n");
return 0;
}
④ c語言求素數的辦法只需解題思路
看你需不需要追求時間效率
是不是需要求超大的素數,int64 的有20位
甚至高精度情況下的素數,百位上千位
可以建立素數表來求
你仔細想想,任意一個整數都能分成幾個素數的乘積,只由素數只有自己
所以,對於每個我們需要判斷的數,只需要用素數表裡的數來除即可
若都不能整除,那此數一定也是素數,那就把它加入素數表內
一直求下去就行,一般來說10000個數的素數表就能判斷 int32內的素有數
因為素數表能判斷素數的范圍是 表內最大那個素數的平方
⑤ 如何求C語言素數
如果一個數是素數,只要判斷他是否能被2到這個數的開方之間的數整除就行了。
int flag=0;
if(m==2){ //先判斷是不是2
flag=1;
}
else{
for(int i=2;i<=sqrt(m);i++){
flag=1;
if(m%i==0){ //不是素數
flag=0;
break;
}
}
}
return (flag==1)?m:-1; //判斷是否為1,為1輸出m,否則輸出-1 ,-1表示不是素數
如果是求某個范圍的素數,可以連續調用這個方法,上面是常規的方法,還有更好的方法自己去查一下。
⑥ c語言求素數
【例】判斷m是否素數。
N-S流程圖:
#include
main()
{
int
m,i,k;
scanf(「%d」,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf(「%d
is
a
prime
number\n」,m);
else
printf(「%d
is
not
a
prime
number\n」,m);
}
【例】求100至200間的全部素數。
#include
main()
{
int
m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{printf(「%d」,m);
n=n+1;}
if(n%5==0)printf(「\n」);
}
printf(「\n」);
}
⑦ 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;
}
(7)c語言找出素數擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法