一个超级素数的疑问~~~

drizztguai 2008-09-07 08:25:08

#include <stdio.h>
#include <stdlib.h>

int superprime(int a[])
{
int i,j;
int t;
int flag;
int k=0;

for (i=1000;i<=9999;i++){
t=i;
flag=1;
while(t>0){
for(j=2;j<=t;j++){
if(t%j==0){
flag=0;
break;
}
}
t/=10;
}
if(flag){
a[k]=i;
k++;
}
}
return (k-1);
}

int main()
{
int n[20];
int i;
int k;
FILE *out;
k=superprime(n);
for(i=1;i<21;i++){
printf("%6d",n[i-1]);
if(i%6==0)
printf("\n");
}

if( ( out = fopen("myf2.out","w") )==NULL ){
printf("FILE cant be created");
exit(0);
}

for (i=1;i<21;i++){
fprintf(out,"^%6d",n[i-1]);
if(i%6==0)
fprintf(out,"\n");
}
return 0;
fclose(out);
}


为什么输出结果不对呢...

超级素数就是2333 这样的素数 233 23 3都是素数.

还有个疑问
就是利用函数
int prime(int n)
{
int i;
for (i=2;i<=sqrt(n);i++)
if(n%i==0) return 0

return 1;
}

判断是不是素数时候vs2008提示 i和n必须是double或者float

不能调试 不知道vc 6.0存在不存在这个问题?


}
...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
phz1985 2008-09-07
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>

int superprime(int a[])
{
int i,j;
int t;
int flag;
int k=0;

for (i=1000;i<=9999;i++){
t=i;
flag=1;
while(t>0)
{
for(j=2;j<t;j++)//这儿不可取=号。
{
if(t%j==0)
{
flag=0;
break;
}
}
t/=10;
}
if(flag){
a[k]=i;
k++;
}
}
return k;//返回k.
}

int main()
{
int n[20];
int i;
int k;
FILE *out;
k=superprime(n);
for(i=0;i<k;i++){//这儿需修改。
printf("%6d",n[i]);
if((i+1)%6==0)
printf("\n");
}

if( ( out = fopen("myf2.out","w") )==NULL ){
printf("FILE cant be created");
exit(0);
}

for (i=1;i<21;i++){
fprintf(out,"^%6d",n[i-1]);
if(i%6==0)
fprintf(out,"\n");
}
return 0;
fclose(out);
}
lann64 2008-09-07
  • 打赏
  • 举报
回复
superprime使用的算法有问题。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧