c++:求出2 ~ 80 之间的所有素数,要求每行输出4个素数.

我想保留flag,算法也大致不变,请问这个程序要怎么改呢?
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,n=0,flag=0;
for(i=2;i<=80;i++)
{
for(j=2;j<=i;j++)
if(i%j==0) {flag=1;break;}
if(flag==0) {cout<<setw(4)<<i, n=n+1;}
if(n%4==0) cout<<endl;
}
cout<<endl;
return 0;
}

按照你的思路改了下:

#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
    int i,j,n=0,flag=0;
    for(i=2;i<=80;i++)
    {
        flag = 0;
        for(j=2;j<i;j++) 
            if(i%j==0)
            {
                flag=1;
                break;
            }
        if(flag==0)
        {
            cout<<setw(4)<<i;
            n=n+1;
            if(n%4==0)
                cout<<endl;
        }
    }
    cout<<endl;
    return 0;
}

最主要的问题在于每个数判断之前需要把flag重新置零,另外,换行需要在有输出的情况下进行,即移到flag==0里面

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-13
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,n=0,flag=0;
for(i=2;i<=80;i++)
{
for(j=2;j<i;j++)
if(i%j==0) {flag=1;break;}
if(flag==0)
{
cout<<setw(4)<<i;
n=n+1;
if(n%4==0) cout<<endl;
}

flag=0;

}
cout<<endl;
return 0;
}
第2个回答  2013-06-13
这个你自己慢慢研究,,实在不会再问其他的人。

用c++编程 求2—100之间的素数
比如:第一次删除2的倍数4,6,8,10,12...100 第二次删除3的倍数6,9,12,15...99.第三次删除5的倍数10,15,20...95,100 第四次删除7的倍数14,21,28...91,98 总共循环了四次 在程序中实现删除就是在数组的相应位置标1.改变程序中的MaxNumber的值,可以得到任何范围的素数.include<iostream...

C++程序编写,输入一个数n,统计出2到n之间的 所有素数个数。
\/\/\/ 完整代码, 输出是每行10个

C语言程序编程:输出100到200间的全部素数,每行输出5个素数。具体...
1、打开VC2010后的界面。2、点击文件--->新建--->项目。点击 32位控制台应用程序 输入名称 3、以上完成后,再点左击C1后,右击源文件,——>添加——>新建项。4、再选择c++文件,文件名称,现在都可以写程序了。5、#define max 100 宏定义max=100。6、最后运行结果如下。

C++ ,键盘输入正整数N,输出2~N间的所有素数,以及素数个数,_百度知 ...
\/\/#include "stdafx.h"\/\/vc++6.0加上这一行.include <iostream> using namespace std;void main(void){ int n,i,j,sum=1,flag;cin >> n;cout << 2 << ' ';for(i=3;i<=n;i+=2){ for(flag=j=3;j*j<=i;j+=2)if(!(i%j)){ flag=0;break;} if(flag){ cout <<...

如何用c++输出从2开始的连续100个素数
素数是一个大于1的自然数,除了1和其本身外,不能被其他自然数整除的数。C++从2开始输出连续的100个素数,则只需要从2开始往后循环,如果该数是素数,则输出,并统计加一,统计够100个素数时跳出循环即可。示例代码:include <stdio.h>bool is_prime(int n){ int i; for (i = 2; i*i...

c++ 求0到100之间的所有素数,并输出个数
include <iostream>#include <vector>using namespace std;int main(){vector<int> nPrime; \/\/存放素数nPrime.push_back(2); \/\/2是第一个素数bool is_prime = false; \/\/记录该树是否是素数for (int i = 3; i < 100; i += 2) { \/\/检测3到100之间的所有奇数is_prime = true;for ...

请用C++编写一个程序:找到2~100中所有的质数。(素数) 一行一个素数
int m,i,k,n=0;\/*n作计数器*\/ for(m=1;m<=100;m=m+2){ k=1;\/\/标志变量,预设为1,一旦变成0表示不是素数 for(i=2;i<=m\/2;i++)if(m%i==0){ k=0;break;} if(k==1)cout << m << (++n%10==0?'\\n':'\\t');\/\/是素数则输出并控制一行10个 } cout << endl...

c++求任意两个数之间的所有素数
判断一个数是否被另一个数整除可以用取余运算符%,比如:a%b==0(就是a除以b的余数等于0),就可以判定a可以被b整除。针对本题,为了使代码更简洁,可以专门写个判断一个数是否素数的函数,然后在主函数中调用就可以很容易实现求任意两个数之间的所有素数的要求。具体代码如下:【程序代码】#include...

求100以内的所有素数。要求每行输出5个数。请用c++语言编写并回答_百 ...
cout<<"\\n"; \/\/ 出的素数数量计数为5时,换行 m=0; } m++; } } system("pause"); return 0; }

2~100内所有素数,每行显示5个 c++
include<iostream.h> void main(){ const int N=100;int i,j,counter,sign;for(i=2;i<=N;i++){ if(i==2){ cout<<i<<'\\t';counter++;} for(j=2;j<=i-1;j++){ sign=1;if(i%j==0)\/\/当i=2,j=2时,就跳出了,当然没有2。你这算法已经很麻烦了,就让j=1开始吧。{ ...

相似回答
大家正在搜