用C语言编一程序,输出200~300之间的全部素数,求解啊
展开全部
#include<iostream>
usingnamespacestd;
intHaveFun()
{
intSum=0;
for(intvar=200;var<=300;var++){
boolisPrime=1;
for(intfac=2;fac*fac<=var;fac++)
if(!(var%fac))isPrime=0;
if(isPrime)Sum+=var;
}
returnSum;
}
intmain()
{
cout<<HaveFun()<<endl;
return0;
}
方法二、
扩展资料:
return 0用法:
return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。
return语句用来结束循环,或返回一个函数的值。
1、return 0,说明程序正常退出,返回到主程序继续往下执行。
2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。
展开全部
楼上的楼上算法可以改进:
第一,200以上偶数一定不是素数
第二,17*17=289,就是说,300以内的合数,最小的因子最大只能是17。所以,程序可以改为下面这种,计算时间将大大地减少:
#include <stdio.h>
void main()
{
int i,k;
for (i=201;i<300;i=i+2)
{
if(i%3!=0 && i%5!=0 && i%7!=0 && i%11!=0 && i%13!=0 && i%17!=0)
printf("%d ",i);
}
}
就可以了。循环比原来减少一半每次循环一共只要比6次。
第一,200以上偶数一定不是素数
第二,17*17=289,就是说,300以内的合数,最小的因子最大只能是17。所以,程序可以改为下面这种,计算时间将大大地减少:
#include <stdio.h>
void main()
{
int i,k;
for (i=201;i<300;i=i+2)
{
if(i%3!=0 && i%5!=0 && i%7!=0 && i%11!=0 && i%13!=0 && i%17!=0)
printf("%d ",i);
}
}
就可以了。循环比原来减少一半每次循环一共只要比6次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-12-03
展开全部
可以对楼上代码优化一下
#include <stdio.h>
#include <math.h>
int main()
{
int i,j;
for(i=200;i<300;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if( j>sqrt(i) )
printf("%d\n",i);
}
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
int i,j;
for(i=200;i<300;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if( j>sqrt(i) )
printf("%d\n",i);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
~好用啊
#include<stdio.h>
void main()
{
int n,i;
for(n=200;n<300;n++)
{
for(i=2;n%i;i++);
if(n==i)
printf("%5d",i);
}
}
#include<stdio.h>
void main()
{
int n,i;
for(n=200;n<300;n++)
{
for(i=2;n%i;i++);
if(n==i)
printf("%5d",i);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int isPrime(int num) {
int divisor = 3;
int testLimit = num;
if (num % 2 == 0) return 2;
while ( testLimit > divisor )
{
if ( num % divisor == 0 )
{
return 3;
}
testLimit = num / divisor;
divisor += 2;
}
return 1;
}
int main()
{
int i = 0;
int iFlag = 0;
for (i=200; i<300; i++)
{
iFlag = isPrime(i);
if (iFlag==1)
{
printf("%d ", i);
}
}
}
int isPrime(int num) {
int divisor = 3;
int testLimit = num;
if (num % 2 == 0) return 2;
while ( testLimit > divisor )
{
if ( num % divisor == 0 )
{
return 3;
}
testLimit = num / divisor;
divisor += 2;
}
return 1;
}
int main()
{
int i = 0;
int iFlag = 0;
for (i=200; i<300; i++)
{
iFlag = isPrime(i);
if (iFlag==1)
{
printf("%d ", i);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询