怎么求质数,c语言求素数

我只说思路,就不写代码了,太麻烦。偷懒……
定义一个变量i,从2开始,到你要求的范围最大数比如说100为止,定义另一个变量,j,从2开始,到i为止。for循环,i>2,i<100,i++,{接一个for循环,j=2,j<i,j++,后面跟判断语句,if i%j=0,break,printf"不是素数"};printf"是素数";return 0这样就好了。

函数求素数

dim a() as integer public function susu(a as integer) dim v as boolean v = false: n = 2 do while n <= sqr(a) and v = false if a mod n = 0 then v = true else n = n + 1 end if loop if v = false then susu = a else susu = 0 end if end function private sub command1_click() dim i as integer for i = 2 to 500 if susu(i) <> 0 then n = ubound(a) redim preserve a(n + 1) a(n + 1) = i end if next print print &quo缉攻光纪叱慌癸苇含俩t;500以内的素数中,最大的前十项是: " for k = 0 to 9 print a(n + 1 - k); m = m + a(n + 1 - k) next print print print "这10个素数之和是: " & m end sub private sub form_load() redim a(0) as integer end sub

c语言求素数

【例】判断m是否素数。
N-S流程图:
#include<math.h>
main()
{
int m,i,k;
scanf(“%d”,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf(“%d is a prime number ”,m);
else
printf(“%d is not a prime number ”,m);
}
【例】求100至200间的全部素数。
#include<math.h>
main()
{
int m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{printf(“%d”,m);
n=n+1;}
if(n%5==0)printf(“ ”);
}
printf(“ ”);
}

c语言求素数

楼上说的不对,其实不是什么if-else语句的问题,本来就是应该for循环内运行if(a%i==0)语句的,return1;语句是在for循环外的,表示没有找到a的约数时才return1;也即表示a为素数。这里没什么问题的,
问题存在于你的while语法:你写的while(x<=100);注意你写的while后面有个分号,其实这就已经构成一个while循环了。循环内容就是“;”表示什么也不做,而循环条件是1<=100为真的,程序运行到这里就进入死循环。。。从而出现你所说的“程序没有错,可是运行之后除了‘1到100之间的所有素数是:’这行字之外啥也没有,”
只要删除while(x<=100);后面的分号就可以了,即
#include<stdio.h>
intprime(int);
main()
{
intx;
printf("1到100之间的所有素数是: ");
x=1;//这里最好是从2开始的,否则会出现1也是素数的结果。或者
//你在intprime(int);函数中单独判断一下参数为1的特殊情
//形。
while(x<=100)//这里不要分号。但do-while语句后面是有分号的
{
if(prime(x))
printf("%d",x);
x=x+1;
}
}
intprime(inta)
{
inti;
for(i=2;i<=a/2;i++)
if(a%i==0)
return0;
return1;
}

函数求素数

把i%x==0换为x%i==0
还有些细节我改了一下
#include#include void isprimenumber(int x) { int i; if(x<2)printf("NO!"); for(i=2;i<=sqrt(x);i++) { if(x%i==0) { printf("NO!"); break; } } if(i>sqrt(x)) printf("YES!"); } main() { int n; printf("input number:"); scanf("%d",&n); isprimenumber(n); }

文章说明:本文收集于网络,仅作参考,若有侵权,请联系本站删除!

转载请注明:生活百科网 » 怎么求质数,c语言求素数

分享到

免责声明:本站部分内容转载于网络,其中内容仅代表作者个人观点,与本网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。

本站联系邮箱:douxingdu02@163.co m