判断常数能否将前面所有素数整除,若不能整数,即为新素数,并保存至数组里。
用代码块功能插入代码,请勿粘贴截图
include<stdio.h>
//主函数
//判断函数,返回值
//输出数组
int main( void ){
int num[100] = {2};
int i = 3;//起始数
int count =1;//计数器
while( count < 100 ){
if( IsPrime( i , num , count ) ){
num[count++] = i;
}
i++;
}
//输出数组
int a ;
for(a=0;a<100;a++){
printf("%d\t", num[count] );
if( (a+1)%5==0 ){
printf("\n");
}
}
return 0;
}
int IsPrime( int i , int num[ ] , int count){
int ret = 1;
int a;
for( a=0 ; a<count ; a++ ){
if( i%num[a] == 0 ){
ret = 0 ;
break;
}
}
return ret;
}
不报错,也无结果
我的解答思路和尝试过的方法
教材代码:
#include<stdio.h>
int main(void)
{
int prime[ 100 ]={2};
int count=1;
int i=3;
while (count< 100 ){
if( isprime(i,prime,count)){
prime[count++]=i;
}
i++;
}
for(i=0;i<100;i++){
printf("%d",prime[i]);
if( (i+1)%5 )printf("\t");
else printf("\n");
}
return 0;
}
int isprime(int x,int knownprimes[],int y){
int ret=1;
int i;
for(i=0;i < y;i++){
if(x% knownprimes[i]==0){
ret=0;
break;
}
}
return ret;
}