当前位置:首页 » 编程语言 » 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);
}
大概就是这样,,,,你调试下吧。。。。