#include"stdio.h"
int main()
{
int num=0;
int a,i,s;
for(a=100;;a++)
{
for(i=2;i<a;i++)
{
if(a%i)
{
num++;
if(num==37)
break;
}
}
}
s=(a/10)%10;
printf("%d",s);
return 0;
}
题目是大于100的第37个素数的十位数是多少
代码思路是错的啊
#include"stdio.h"
int main()
{
int num=0;
int a,i,s;
for(a=100;;a++)
{
for(i=2;i<a;i++)
{
if(a%i == 0)
break;
}
if(i==a)
num++;
if(num==37)
breal'
}
s=(a/10)%10;
printf("%d",s);
}
死循环了啊,没有判断条件。
你只是在内循环中增加了break,只能退出内循环。
num++的位置不对啊,只有当i == a的时候才是素数,你的代码是只要余数是1,num就++了,逻辑错了
代码修改如下:
#include"stdio.h"
int main()
{
int num=0;
int a,i,s;
for(a=100;;a++)
{
for(i=2;i<a;i++) //这里判断是否是素数
{
if(a%i ==0)
break;
}
if(i==a) num++; //只有当i ==a的时候,a才是素数
if(num == 37) break;
}
s=(a/10)%10;
printf("%d",s);
return 0;
}