素編程求數
1. 編程求素數,小白求解,急!
把else i=i+1中的else刪除,把if(w==1)改為if(w==0),你的代碼就OK了,雖然不精巧。
2. c語言編程 求素數 求解釋
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void 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) //如果i>=k+1 說明一直循環到最後了,中間沒有可以除盡的數,這個數就是素數
printf("%d is a prime number\n",m);
else //相反就不是素數
printf("%d is not a prime number\n",m);
system("pause");
}
3. C語言編程求100—1000內的素數個數及和
給你一個超簡潔的代碼吧: #include<stdio.h>
#include<math.h>
void main(){
int i,k,count=0; /*count用於統計素數個數*/
long sum=0; /*sum存儲素數累加和,由於其和超過2^15-1,所以必須用長整形*/ for(i=100;i<=1000;i++){
for(k=2;k<=sqrt(i) && i%k!=0;k++); /*這一步是超簡結寫法,直接將if判斷寫入for判斷語句中*/
if(k>sqrt(i)){ /*如果k>sqrt(i),說明上面的循環條件都不滿足,故i的值就是一個素數*/
count++;
sum+=i;
}
} printf("100~1000之間共有 %d 個素數\n它們的和是:%ld",count,sum);}
4. C語言編程 求素數 求解釋
#include
#include
#include
void
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)
//如果i>=k+1
說明一直循環到最後了,中間沒有可以除盡的數,這個數就是素數
printf("%d
is
a
prime
number\n",m);
else
//相反就不是素數
printf("%d
is
not
a
prime
number\n",m);
system("pause");
}
5. c語言編程,求素數的問題
他這樣是篩素數
a[i]最初等於2
他把能被2整除的都記為0了
那在以後的運算中
保證a[i]是素數
也就是除一個素數
a[j]等於0
說明他已經被一個素數整除了
已經不是素數了
所以就不用再計算他了
也就是
先篩掉2的倍數
再篩掉3的倍數
再篩掉5的倍數(4被2整除
已經記為0)
再篩掉7的倍數(6被2整除
已經記為0)
再篩掉11的倍數
(8被2整除
9被3整除
10被2整除
都已經被記為0)
。。。。。
最後剩下的就都是素數了
樓主主要注意一下i和j的循環
j的循環是在i的循環裡面的,而且他們同是代表數組a的下標
那麼當i=2時,是進入j的循環,此時是要將j的循環跑完之後才再進行i++
那麼a[j]已經記為0的數,也就是j,i的循環肯定是之後才會循環到
再說明白點,當i=2時,你把j=4的a[j]=0,那麼此時的i是2,之後i會自加到4
那麼a[i]就是0
如果樓主想不明白
可以把i和j的循環打出來看一下,就像這樣
for(i=2;i<sqrt(N);i++)
for(j=i+1;j<N;j++)
{
printf("i=%d
j=%d\n",i,j);
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
6. c語言編程求素數(也即是質數)
#include <stdio.h>
void main()
{ int x;
int i,f;
f=0;
scanf("%d",&x);
for(i=2;i<x;i++)
if(x%i==0) { f=1; break;}
else {f=0; continue;}
if(f) printf("%d不是素數\n",x);
else printf("%d是素數\n",x);
system("pause");
}
7. 用C語言寫出求素數的編程
參考代碼:
int main(){
int num,m,n,d,c,priSum;
printf("Enter the Range Between m,n ");
scanf("%d %d", &m,&n);
for (num = n; num <= m; num++)
{
for(d = 2; d < num; d++)
{
if (num % d == 0){
continue;
}
}
if (d == num){
priSum += d;
c++;
}
}
printf("m~n之間的素數個數:%d,和 %d ",c,priSum);
return 0;
}
8. c語言中如何求素數
#include<stdio.h>
#include<math.h>
void main() // 這里不要搞錯了,main
{
int i,n;
printf("輸入一個整數n");
scanf("%d",&n);
n=abs(n);
if(n>2)
{
for(i=2;i<n;i++)// 在for下面跟個if判斷,如果你輸入4的話,這個程序列印兩次4不是
if(n%i==0&&n==i)
scanf("%d是素數",n); break ;// 這里應該是printf了吧,
else
scanf("%d不是素數",n); break;// 這樣會比較好點
}
else
scanf("%d不是素數",n);// 2就不是素數么,
}
這樣也有問題,當你輸入5的時候,for語句先判斷能否整除2,不能整除2的話,就列印不是素數,寫個函數是比較好的方法
9. 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;
}
10. 編程求素數
我寫了個截了個圖,主要是讓你自己看看,自己敲一敲代碼,這樣學起來更快,如果直接拷貝就沒啥意思了,有問題歡迎討論!