还能怎么样简化算法呢?
#include <stdio.h>int fun(int a){
int i,sum;
int t=0;
sum=0;
if(a==1)
t=1;
else{
for (i=1;i<=a;i++){
if(a%i==0&&i!=1&&i!=a)
t=1;
}
return t;
}}
int main(){
int i=0;
int n;
int p;
int k;
scanf("%d",&n);
int summ=0;
for(k=0;summ!=n;k++){
for(;i<=99;i=i+1){
p=k*100+i;
if(fun(p)==0)
{break;}
}
if(i==100)
{summ=summ+1;}
i=0;
}
printf("%d %d",k*100,k*100+99);
return 0;
}
问题:若一个世纪的100个年号中不存在一个素数,则这个世纪称为合数世纪。求第n个合数世纪(公元0年起始)。这个程序没法运行,没有编译错误,但是只要运行输入n后光标就不动,程序就终止。我觉得是计算方法有问题,导致循环太多。