我只说思路,就不写代码了,太麻烦。偷懒……
定义一个变量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语言求素数