| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5050 人关注过本帖
标题:怎么算素数的?
只看楼主 加入收藏
heshanshan
Rank: 1
来 自:义乌
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-12
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:11 
怎么算素数的?
程序填空,不要改变与输入输出有关的语句。
输入一个正整数n,再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
输出使用以下语句:
printf("%d is a prime\n", m);
printf("%d is'nt a prime\n", m);
输入输出示例:括号内为说明
输入
4      (n=4)
1  2  9  17
输出
1 is'nt a prime
2 is a prime
9 is'nt a prime
17 is a prime
搜索更多相关主题的帖子: 素数 
2010-04-18 17:54
haojinbing
Rank: 2
等 级:论坛游民
帖 子:10
专家分:14
注 册:2010-4-17
收藏
得分:2 
for(i=2;i<=n-1;i++)
if(a%i==0)则不是素数 不等于0则是素数
貌似是这样的
2010-04-18 18:32
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:2 
对,就是用循环一个一个判断的。2 3 5 7 11 13 17 19 23 29 31……就是在所有比1大的整数中,除了1和它本身以外,不再有别的约数。
2010-04-18 18:48
b001lcp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2010-3-17
收藏
得分:2 
int i, j, m, n;
printf("Please Input integer:\n");
scanf(%d, &n);
printf("Please Input integers Num = %d :\n",n);
for (i = 0; i < n; i++)
{
    scanf(%d, &m);
    for (j = 2; j < m/2; j++)
    {
        if (0 == m % 2)
        {
            printf("%d is'nt a prime\n", m);
            break;
        }
    }
    printf("%d is a prime\n", m);
}

实现主体部分如上。
2010-04-18 19:12
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:2 
回复 楼主 heshanshan
我写了一个,你看看是否符合你的要求。
请提提意见.
程序代码:
#include<stdio.h>
#include<math.h>

int judgement(int& n)
{
    int m,i,flag=1;
    m=sqrt(n);

    for(i=2;i<=m;i++)
        if(n%2==0)
        {
            flag=0;
            break;
        }
    return flag;
}


int main()
{
    int n;
    printf("请输入一个整数(>2):");
    scanf("%d",&n);
    if(judgement(n)==1)
        printf("%d is a prime\n", n);
    else
        printf("%d isn't a prime\n", n);

    getchar();getchar();
    return 1;


}


南国利剑
2010-04-18 22:29
heshanshan
Rank: 1
来 自:义乌
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-12
收藏
得分:0 
回复 5楼 南国利剑
似乎可行,但有点小问题……
2010-04-19 11:01
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:2 
以下是引用南国利剑在2010-4-18 22:29:12的发言:

我写了一个,你看看是否符合你的要求。
请提提意见.#include
#include
 
int judgement(int& n)
{
    int m,i,// flag=1;
    m=sqrt(n);
 
    for(i=2;i<=m;i++)
        if(n%2==0)
        {
            // flag=0;
            // break;
            return 0;
        }
    return 1; // flag;
}
 
 
int main()
{
    int n;
    printf("请输入一个整数(>2):");
    scanf("%d",&n);
    if(judgement(n)==1)
        printf("%d is a prime\n", n);
    else
        printf("%d isn't a prime\n", n);
 
    getchar();getchar();
    return 1;
 
 
}
 
n%i

[ 本帖最后由 succubus 于 2010-4-19 11:17 编辑 ]

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-04-19 11:12
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:2 
main()
{
int i,n;
printf("Please input number\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
  if(n%i==0)
  break;
  if(i<n||n==1)
  printf("%d is not prime number\n",n);
  else
  printf("%d is prime number\n",n);
}
以上是判断一个数是不是素数的逻辑,供参考
2010-04-19 11:16
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
要实现连续多次输入整数判断是否是素数,只要在原逻辑上增加个一维数组接收数据,然后再通过一个一个循环将数据输出进行判断即可。
2010-04-19 11:20
newstar10
Rank: 2
等 级:论坛游民
帖 子:32
专家分:48
注 册:2010-4-14
收藏
得分:2 
回复 楼主 heshanshan
这是我曾经写过的一个程序,你可以参考一下:

#include <iostream.h>
#include <iomanip.h>
#include <math.h>
bool prime (int);      
void main()
{
    int i, n, j=0;         
    cout<<"请输入正整数n(n<10000),求1~n范围内的所有素数"<<endl;
    cin>>n;
    for (i=2; i<=n; i++)
        if (prime(i))      
        {    cout<<setw(5)<<i;   j++;
            if (j%10==0) cout<<endl;
        }
        cout<<endl;
}
bool prime (int i)
{  int k=sqrt(i);
   int j;
   for (j=2; j<=k; j++)
       if (i%j==0)  return 0;   
       if (j>k) return 1;      
}  
2010-04-19 11:41
快速回复:怎么算素数的?
数据加载中...
 
   



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

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