【发布时间】:2014-11-09 02:04:09
【问题描述】:
我想找到两个 13 位数字(1,000,000,000,000 和 1,000,000,100,000)之间的质数...我使用了类似 unsigned long long 或 long long int 和 scanf 与 %llu 和 %lld 之类的东西工作。我怎样才能做到这一点?我使用这样的代码:
int main()
{
long long int n1, n2, i;
int flag, j;
printf("Enter two numbers (intervals): ");
scanf("%lld %lld", &n1, &n2);
printf("Prime numbers between %lld and %lld are: ", n1, n2);
for(i=n1+1; i<n2; ++i)
{
flag=0;
for(j=2; j<=i/2; ++j)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%lld ",i);
}
return 0;
}
【问题讨论】:
-
什么不起作用?算法还是scanf?
-
筛子会覆盖13位数字吗??
-
您可能希望在某些输出中包含一些换行符。提示中不需要它(第一个
printf());大多数系统将确保在读取任何内容之前刷新标准输出。但其他打印操作应包括一些换行符。你的算法效率很低。除此以外,2 是唯一的偶素数。 -
尝试使用
%Ld而不是%lldforlong long int和scanf()
标签: c