标题:输出n以内的素数 不知道哪错了
只看楼主
西边
Rank: 1
等 级:新手上路
帖 子:27
专家分:2
注 册:2013-7-25
结帖率:80%
已结贴  问题点数:20 回复次数:11 
输出n以内的素数 不知道哪错了
#include<stdio.h>
int s(int k);
void main()
{
int i,n;
printf("please input a number here:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
    if(s(i)) printf("%d\n",i);
}
}
int s(int k)
{
int i;
for(i=2;i<k;i++)
{
    if(k%i==0) return 0;
else return 1;
}
结果输出2 3 5 7 9…… 哪错了
搜索更多相关主题的帖子: please number 
2013-08-07 22:59
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
得分:2 
倒数第2行有错误!
9 / 2 不等于0,返回的是1,楼主自己改吧。
2013-08-07 23:14
XiaoXiao_Ren
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
威 望:1
帖 子:80
专家分:198
注 册:2013-7-17
得分:2 
回复 楼主 西边
int s(int k)
{
int i;
for(i=2;i<k;i++)
{
    if(k%i==0) return 0;  
else return 1; //这里不能保证当前的k就是素数,如  9%2 != 0,此处就返回1,可以在for外面直接return 1
}

否极泰来
2013-08-07 23:30
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:2 
循环判断写错了,输入9,只对9%2判断后,就return 1了
挪到循环外面就行了
for(i=2;i<k;i++)
{
    if(k%i==0) return 0;   
}
return 1;

please input a number here:
20
2
3
5
7
11
13
17
19

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-08-08 06:27
丶弱水彡千
Rank: 5Rank: 5
来 自:地狱十九层
等 级:职业侠客
威 望:2
帖 子:203
专家分:369
注 册:2013-6-16
得分:0 
#include <stdio.h>
void fenjie(int n)
{
  int i;
  while(n%2==0)
  {
    printf("2");
    n /= 2;
    if(n==1)
    {
      printf("\n");
      return;
    }
    printf("*");
  }
 
  for(i=3;i<n;i+=2)
  {
    while(n%i==0)
    {
      printf("%d",i);
      n /= i;
      if(n==1)
      {
        printf("\n");
        return;
      }
      printf("*");
    }
  }
 
  printf("%d\n", n);
}
int main(void)
{
  int i,n;
  printf("请输入一个正整数,程序将会输出它的质因数分解。\n");
  printf("输入0结束\n");
printf("请输入:");
  scanf("%d", &n);
 
  while(n>0)
  {
    printf("%d = ", n);
    fenjie(n);
   
    printf("请输入:");
    scanf("%d", &n);   
  }
}
应该没问题  楼主看下这个行不

这个怎么玩
2013-08-08 07:36
丶弱水彡千
Rank: 5Rank: 5
来 自:地狱十九层
等 级:职业侠客
威 望:2
帖 子:203
专家分:369
注 册:2013-6-16
得分:0 
发错了  以前写的放错位置了  等等  再写个

这个怎么玩
2013-08-08 07:38
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
得分:2 
应该是把所有的比  n  小的数都除完才能判断  n  是否为素数吧,

提示:用   break   来解决   

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-08-08 07:59
丶弱水彡千
Rank: 5Rank: 5
来 自:地狱十九层
等 级:职业侠客
威 望:2
帖 子:203
专家分:369
注 册:2013-6-16
得分:3 
难得写了 改了下#include<stdio.h>
int s(int k);
void main()
{
int i,n;
printf("please input a number here:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
    if(s(i)) printf("%d\n",i);
}
}
int s(int k)
{
int i;
for(i=2;i<k;i++)
{
    if(k%i==0)
        return 0;
}
        return 1;

}

这个怎么玩
2013-08-08 08:00
天楚
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:楚地
等 级:小飞侠
帖 子:550
专家分:2113
注 册:2013-3-14
得分:2 
int s()里面的for循环应该有问题!!!

没有哪条路好走,选择了,就坚持下去~~~~
2013-08-08 08:13
月祭樱冢
Rank: 2
等 级:论坛游民
帖 子:83
专家分:97
注 册:2013-7-15
得分:2 

你试试
程序代码:
#include <stdio.h>
#include <math.h>
int main()
{int n,k,i,m=0,j;
printf("please enter an integer number:\n");
scanf("%d",&n);
printf("2");
for(j=3;j<=n;j=j+2)
{k=sqrt(j);
for(i=2;i<=k;i++)
if(j%i==0)break;
if(i>=k+1)
{printf("%4d",j);
m=m+1;
}
if(m%10==0)printf("\n");
}
printf("\n");
return 0;
}

算法是程序的灵魂
2013-08-08 08:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-418773-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.405430 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved