當前位置:首頁 » 編程語言 » 500以內素數之和的c語言程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

500以內素數之和的c語言程序

發布時間: 2022-05-18 16:45:38

c語言編程,求500以內的全部素數,每行輸出10個。可以提高懸賞哦!

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

inlineboolIsPrimeNumbers(intn){
if(n<2)returnfalse;//1既不是合數又不是質數(素數),所以排除,2是最小質數
//對n開方,目的在於減少循環次數,原理:因數在根的前面都沒有,則後面肯定不會有
intk=(int)sqrt((double)n);

for(inti=2;i<=k;i++)
{
if(n%i==0)returnfalse;
}
returntrue;
}

intmain(){

intcount=0;//計數器,記錄每行輸出了多少個

for(inti=2;i<=500;i++)
{
if(IsPrimeNumbers(i)){
printf("%d",i);
count++;
if(count%10==0)printf(" ");//取模每10個換行
}
}

printf(" ");
system("pause");//屏幕暫停
return1;
}

② C語言編程:求五百以內所有的素數

int sushu[100]; //保存素數int scount=0; //素數的數量int GetSS(int Max) //完成查找素數的過程{ int m; if(Max<2) scount=0; else { scount=1; sushu[0]=2; } m=2+1; while(m<=Max) { int i; for(i=0;i<scount;i++) { if(m%sushu[i]==0) break; } if(i==scount) { sushu[scount++]=m; } m++; } return scount;}
int sc=GetSS(500);

③ c語言中的素數編程題:計算500-800區間內素數個數,並按從大到小的順序進行加減間隔計算求和。

#include<stdio.h>
//計算500-800區間內素數個數,並按從大到小的順序進行加減間隔計算求和。
intmain()
{
intcnt=0,sum=0,i,j,t=-1;
for(i=17;i>=2;i--)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)break;//在i/2前只要遇到一個能除盡的數則跳出本層for循環,則j的值一定小於等於i/2
}
if(j>i/2)//i/2前的每個數都除過一遍且不能除盡(即for循環自然結束)則判斷j為素數
{
t=-t;
sum=i*t+sum;
cnt++;
}
}
printf("%d%d",cnt,sum);
return0;
}

判斷條件的位置放錯了,詳見注釋,上邊的代碼是修改後的。

這里按照原程序的計算方式,為先減後加的順序,如2到13間的素數和為:

13-11+7-5+3-2

④ 寫了一個c語言程序(統計500以內最大10個素數並求和)哪裡不對 初學求指教

你好,我為你解答:
我學過C++,已經拿到了國家級三級證。
這個可以這么寫
#include <stdio.h>
#include <math.h>
int prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n))
return 1;
else
return 0;
}
main()
{
int n,count=0,sum=0;
for(n=500;count!=10;n--)
if(prime(n))
{
printf("%d ",n);
sum+=n;
count++;
}
printf("\nThe sum is %d.\n",sum);
}

懂了嗎?不懂請追問。
滿意請採納,謝謝。

⑤ C語言:計算500以內的素數合(看不懂這個,求解!)

#include<stdio.h> isprime(int n) { for (int i = 3; i < n / 2; i++) if (!(n%i)) return 0; return 1; } main() { int sum = 2; for (int i = 3; i < 1000; i +=2) if (isprime(i)) sum += i; printf("sum = %d\n", sum); }

⑥ c語言求300-500以內素數之和

#include<stdio.h>

intisprime(intx)
{
inti;
for(i=2;i*i<=x;i++)
if(x%i==0)
return0;
return1;
}

intmain()
{
inti,sum=0;
for(i=300;i<=500;i++)
{
if(isprime(i))
sum+=i;
}
printf("%d ",sum);
return0;
}

⑦ 輸出500到600之間所有素數,並求和,c語言

#include<stdio.h>

intmain()
{
inta[101],i,j,b[101],sum=0;
for(i=0;i<101;i++)//建立兩個相同的數組1到100
{
a[i]=i+500;
b[i]=i+500;
}

for(i=0;i<101;i++)//如果a中的元素是素數,那麼b中相應序號的元素的值將會變為0
{
for(j=2;j<a[i];j++)
{
if(a[i]%j==0)
b[i]=0;
}
}

for(i=0;i<100;i++)
{
if(b[i]!=0)//判斷b中的元素是否等於0,不等於的時候輸出a中序號相同的元素值
{
printf("%d ",a[i]);//輸出素數
sum+=a[i];//將判斷出來的素數相加
}
}
printf("sum=%d ",sum);
return0;
}

⑧ 如何用c語言編寫程序輸出500以內最大的10個素數及其之和

  1. 演算法簡單,直接從500到1循環,判斷每個數是否為素數,如果是素數,輸出,並累加,一直判斷出10個素數,終止循環,輸出累加總數。

  2. 常式:

    #include<stdio.h>
    intmain(){
    intprime;
    intprime_pti[100];
    intprime_z=0;
    inti,n,p=0;
    inta,b;
    intstep=0;
    for(prime=i=1;i<=500;i++)/*找出500內的所有素數*/
    {
    for(n=2;(n*n)<=i;n++)/*判斷一個數是否是素數*/
    {
    if(i%n==0)
    {
    prime=0;
    break;
    }
    }
    if(prime)/*是素數就存儲在數組中*/
    {
    prime_pti[p]=i;
    p++;
    }
    prime=1;
    }
    for(a=0;a<p-1;a++)/*從大到小排序素數數組*/
    for(b=a+1;b<p;b++)
    {
    if(prime_pti[a]<prime_pti[b])
    {
    step=prime_pti[a];
    prime_pti[a]=prime_pti[b];
    prime_pti[b]=step;
    }
    }
    if(p>9)/*判斷素數個數是否達到10,是則輸出,否則退出。*/
    {
    for(i=0;i<10;i++)
    {
    if(i<9)
    printf("%d+",prime_pti[i]);
    else
    {
    printf("%d=",prime_pti[i]);
    for(n=0;n<10;n++)
    prime_z+=prime_pti[n];
    printf("%d ",prime_z);
    }
    }
    }
    else
    printf("Sorry! ");
    return0;
    }

⑨ C語言:求100-500之間所有素數之和.

#include"stdio.h"
void main()
{
int s=0,n,a;
for(n=100;n<=500;n++)
for(a=2;a<n;a++)
{
if(n/a==0)break;/*如果n不是素數,那麼就會被從2到它本身之間的數整除,就跳出內循環*/
if(a=n) /*如果n是素數,那麼內循環就不會提前結束,等到最後一次循環之後a++,a就會與n相等*/
s+=n; /*將素數全部相加,也就是求和*/
}
printf("100-500之間所有素數之和為:%d\n",s);
}
還有一種好像是(我對這個方法的數學原理不清楚,所以也不大會用)判斷如果2到這個數的開平方數都不能整除這個數,那麼這個數就是素數:
#include"stdio.h"
#include"math.h"
void main()
{
int s=0,n,i,k,j;
for(n=100;n<=500;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n/i==0)break; /*判斷依據和上面的一樣,如果不是素數就提前跳出內循環了,下面的也一樣*/
if(i>k)
s+=n;
}
}
printf("100-500之間所有素數之和為:%d\n",s);
}
大概就是這樣,,,,你調試下吧。。。。