① 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个素数及其之和
算法简单,直接从500到1循环,判断每个数是否为素数,如果是素数,输出,并累加,一直判断出10个素数,终止循环,输出累加总数。
例程:
#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);
}
大概就是这样,,,,你调试下吧。。。。