人体注射玻尿酸有危害:用C写下100之内的素数以及他们的和

来源:百度文库 编辑:神马品牌网 时间:2024/05/14 19:46:44
我是一编程大菜鸟。用C只写到了最前面的几句,后面老是出错。那位兄弟指点一下,最好不要用数组和指针,我慢慢看。不胜感激中。。。。。。
main()
{ int i,n,sum;
for(n=2;n<=100;n++)
{for(i=2;i<=sqrt(n);i++);
if(n%i!=0)
...........
我知道用数组或者其他可以方法可以写出来。但是,我就想谁能按着我写的往下写出来,我好知道我原来写的哪个地方不对。如果在if(n%i!=0)后面直接写sum+=n,肯定是不妥。因为当算出一个素数求和后,退出当前循环时,sum中的值能否保存到下个算出素数时循环中呢(在VB.NET中可以用static声明静态变量)?不知大家能看懂我写的什么意思麽?但是还是谢谢你们!

#include"stdio.h"
#include<math.h>
int main()
{
int n,i,sum,k;
sum=0;

printf("2 ");
for(n=3;n<=100;n+=2){
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;

if(i>k){
printf("%d ",n);
sum+=n;
}
}

printf("\n和是 %d",sum+2);

}
昨天我想第一时间写完~所以只花了10秒帮楼主完成~错误再所难免!
2楼的算法还是太笨!偶数也检测了~效率大大降低!
楼主英明~选择最佳算法~那就是我拉^^

下面是用筛选发求100以内的素数方法:
#include<math.h>
main()
{
int i,j,n,a[101],sum;
sum=0;
for(i=1;i<=100;i++)
a[i]=1;
for(i=2;i<=sqrt(100);i++)
for(j=i+1;j<=100;j++)
{
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0
}
print("/n");
for(i=2,n=0;i<=100;i++)
{if(a[i]!=0)
{print("%5d",a[i]);
n++;
sum+=a[i];
}
if(n==10)
{
print("/n");
n=0;
}
}
printf("%5d",sum);
}

觉得第二个人写的太复杂了

一楼的明显错误

void main()
{
int i,n,sum;
sum=0;
for(n=2;n<=100;n++)
{
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
break;
}
if (i>sqrt(n))
{
sum+=n;
printf(" %d",n);
}
}
printf("和=%d",sum);

}