c语言中素数的求法

我求的是100内的素数,用到数组!作业来的!高手赐教!
#include<stdio.h>
void main()
{
int a[98],i,j,m,n=0;
for(i=2;i<=99;i++)
{
a[i]=i;
m=(int)sqrt(a[i]);
for(j=2;j<=m;j++)
if(a[i]%j==0) break;
if(j>m)
{
printf("%3d",a[i]);
n=n+1;
}
if(n%10==0)
printf("\n"); /*n是控制每行输出10个数*/
}
printf("\n");
}
我这样写,可是放在程序中让它运行却没有结果!
编译没有提示错误!
显示结果是
:Floating point error:Domain.

你的程序中数组赋值出错了a[i]=i但是i=2而a[i]中的i应该是i=0;所以你把所有a[i]改成 a[i-2] 便可以了
再有 你这里用到了sqrt函数,要用 #include<math.h>把math.h库函数包含进来。。。
这是改过后的程序
#include<stdio.h>
#include<math.h>
void main()
{
int a[98],i,j,m,n=0;
for(i=2;i<=99;i++)
{
a[i-2]=i;
m=(int)sqrt(a[i-2]);
for(j=2;j<=m;j++)
if(a[i-2]%j==0) break;
if(j>m)
{
printf("%3d",a[i-2]);
n=n+1;
}
if(n%10==0)
printf("\n"); /*n是控制每行输出10个数*/
}
printf("\n");
}

给我分吧!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-17
<?php
$ss = 2; //声明变量$ss,赋初值为最小的素数
$max = 100; //声明变量$max,赋值为最大的范围
$arr = array(); //声明一个数组$arr
echo $max."以内的素数为:";
while($ss < $max): //判断变量是否在允许的范围内
$boo = false; //声明一个布尔变量$boo,初值为false
foreach($arr as $value): //使用foreach语句遍历$arr数组
if($ss % $value == 0): //如果变量$ss 能够被数组元素整除
$boo = true; //将布尔变量赋值为true
break; //跳出当前循环
endif;
endforeach;
if(!$boo): //判断变量$boo值
echo $ss." "; //如果$boo为假,则说明当前变量$ss为素数,输出素数
$arr[count($arr)] = $ss;//同时存到数组中
endif;
$ss++; //变量$ss加1
endwhile; //结束循环
?>
第2个回答  推荐于2017-10-08
这是我的程序 看看吧

#include "stdafx.h"
#include <stdio.h>
#include <math.h>

int main(int argc, char* argv[])
{

int m;
int i;
int k;
int a[50];
int j=0;

printf("素数是:\n");
for(m=0;m<=100;m = m+2)
{
k=sqrt(m);
for(i = 2;i <= k;i++)

if(m % i == 0)
break;
if(i>k)
{
a[i]=m;
i++;
printf("%4d",m);
}

}

return 0;
}本回答被提问者采纳
第3个回答  2009-11-17
int a[98],i,j,m,n=0;
for(i=2;i<=99;i++)
{
a[i]=i;

你这样做,数组肯定越界了。定义了a[98]的话,只能访问a[0]~a[97],你把数组开到100吧。